2010-12-09 35 views
0

J'ai un champ appelé Pays. Maintenant, je dois filtrer les enregistrements en fonction du pays correspondant.Expression lambda pour plusieurs pays dans Linq à Entité

Lorsque je dois filtrer les enregistrements pour un seul pays, j'utilise l'expression lambda comme ci-dessous.

string strCountry = "USA"; 
var data = entities.Documents.Where(p => p.Country == strCountry); 

Maintenant, j'ai la liste des pays ci-dessous. Je me demande comment filtrer les enregistrements pour cette liste d'attente.

List<string> strCountry = new CacheUser().GetUserCountry(); 

Appréciez vos réponses.

Merci

Répondre

2

Essayez:

List<string> countries = ...; 
var data = entities.Documents.Where(p => countries.Contains(p.Country)); 

Cela devrait se traduire par une requête "IN" dans SQL. Cependant, vous devez être conscient que cela peut échouer une fois que vous obtenez un grand nombre de pays dans la liste. Je suppose que vous ne pouvez pas faire cela avec une jointure à la place? La liste des pays n'est connue que du côté client?