2017-04-05 5 views
-1

linqクエリにemailListと書いてforeachを使わないでlinq文を書くことはできますか?ここでは値のリストを

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(); 
} 

したがって、私はelに1つのlinqクエリを設定します。

+0

これがデータベースのすべての場合は、メモリに取得してフィルタリングする代わりに、結果を取得するのが最適です。 – Igor

+0

電子メールの文字列リストはデータベースにありません – Guerrilla

答えて

4

には、Emailが含まれていますので、すべてEmailFilterとしたいと思います。この場合、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

彼はいません.Timは3秒早くなりました。 – Equalsk

+0

私はそれを作っていなかった、それは私のために言ったことだ。 – Guerrilla

0

をエルがリストである場合

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

に参加するようあなたも、これを書くことができますAsEnumerableを使用して、linqのデータベーステーブルと結合することができます。

var result= from p in db.EmailFilters 
      join s in el.AsEnumerable() on p.Email=el.Email 
      select p; 
関連する問題