2017-04-05 55 views
-1

的列表,可以通過某種方式考取emailList到LINQ查詢編寫下面的LINQ語句,而不用的foreach?凡()的值

List<EmailFilter> el = new List<EmailFilter>(); 

foreach(string email in emailList) // emailList is string list of available emails 
{ 
    el.AddRange(db.EmailFilters.Where(x => x.Email == email)).ToList(); 
} 

因此,我將用單個linq查詢填充el

+0

如果這全部來自/從數據庫中,您最好做一個連接來獲得結果,而不是將其存入內存然後過濾。 – Igor

+0

電子郵件的字符串列表是不是在數據庫 – Guerrilla

回答

4

所以,你要採取哪些Email包含在emailListEmailFilter。在這種情況下,LINQ還可以幫助提高可讀性:

List<EmailFilter> el = db.EmailFilters.Where(x => emailList.Contains(x.Email)).ToList(); 
4

你可以試試:

List<EmailFilter> el = db.EmailFilters.Where(x => emailList.Contains(x.Email)).ToList(); 
+0

感謝。你是4秒笑 – Guerrilla

+1

不,他沒有,添了3秒快速贏家。 – Equalsk

+0

我沒有補足,這就是它對我說的話。 – Guerrilla

0

你也可以寫爲聯合

var el = from emailFilter in db.EmailFilters 
    join email in emailList on emailFilter.Email equals email 
    select emailFilter; 
0

如果EL是一個列表,您可以使用AsEnumerable將其與linq中的數據庫表連接起來。

var result= from p in db.EmailFilters 
      join s in el.AsEnumerable() on p.Email=el.Email 
      select p;