2010-05-19 5 views
1

J'utilise la méthode suivante:LINQ et contient()

public PageOfList<ConsaltQuestion> Filter(int? type, int pageId, EntityCollection<ConsaltCost> ConsaltRoles) 
    { 
     // return _dataContext.ConsaltQuestion.Where((o => o.Type == type || type == null) && (o=>o.Paid == paid)); 
     return (from i in _dataContext.ConsaltQuestion where ((i.Type == type || type == null) && (i.Paid == true) && (ConsaltRoles.Contains(ConsaltCostDetails(i.Type.Value)))) select i).ToList().ToPageOfList(pageId, 20); 
    } 

il renvoie l'erreur:

LINQ to Entities does not recognize the method 'Boolean Contains(mrhome.Models.ConsaltCost)' method, and this method cannot be translated into a store expression. 

Comment puis-je résoudre ce problème? Linq to Entities ne prend pas en charge la méthode Contains.

Répondre

2

Dans ce cas, vous devez utiliser la logique du filtre Contient à l'aide des objets en mémoire (Linq-to-Objects). Si ce n'est pas une option praticable pour des raisons de performance, je vous suggère de créer une procédure stockée qui effectue le contenu et ensuite le mapper à votre modèle d'entité.

L'URL ci-dessous présente les opérateurs de requête pris en charge http://msdn.microsoft.com/en-us/library/bb738550.aspx