J'essaie de sélectionner des éléments d'une table SQLCE, où un champ existe dans un tableau de chaînes. C'est facile en SQL avec:Entity Framework contient/In Clause avec SQLCE
SELECT *
FROM TableX
WHERE SomeField In
([comma delimited array values]);
J'ai du mal à transposer cela à LINQ. Ce qui suit fonctionnerait logiquement, mais il reçoit cette erreur: LINQ to Entities ne reconnaît pas la méthode 'Boolean Contient [String] (System.Collections.Generic.IEnumerable1 [System.String], System.String)' méthode et cette méthode ne peut pas être traduite en une expression de magasin.
var result = from c in DB.TableX
where someStringArray.Contains(c.SomeField)
select c;
S'il vous plaît laissez-moi savoir si quelqu'un a des idées ou des conseils.
Merci!
Mise à jour:
Ce qui suit, reccomended ci-dessous, jette un NotSupportedException, avec un message d'erreur, où la classe X est la classe appelant l'énumération: Impossible de créer une valeur constante de type « NamespaceX.ClassX » . Seuls les types primitifs ('tels que Int32, String et Guid') sont pris en charge dans ce contexte.
var result = from c in DB.TableX
where someStringArray.Any(s => s == c.SomeField)
select c;
La réponse ci-dessous ne fonctionne pas? Cela a fait pour moi. –
Cochez cet article: http://blogs.msdn.com/b/alexj/archive/2009/03/26/tip-8-writing-where-in-style-queries-using-linq-to-entities.aspx – ITmeze