2016-07-28 6 views
0

でクエリをフィルタリングします。私が欲しいものは、私はこのように私のWebアプリケーションでモデルを持っているモデルコレクションをループとのasp.net MVC

List<string> filter = new List<string> { "foo", "bar" } //as example 

は、このような特定の文字列でMyClassをフィルタリングすることである。

var result = context.MyClass.Include(mc => mc.foo); 
result = result.Where(x => filter.Any(f => f == x.foo.Select(d => d.bar))); 

問題がある:文字列のリストを返し、私はのリストと文字列を比較することはできませんSelect()文字列。

誰でもこの問題を解決する方法はありますか?

+0

FirstOrDefaultまたはSingleORDefaultを使用すると、結果は1つだけになります。 –

答えて

0

あなたが欲しいものを言葉に置くことである場合:

:その内部クラスのアイテムのいずれかがフィルタリストに

てみ存在する場合、結果にどの項目を検索

result.Where(item => item.Any(innerItem => filter.Contains(innerItem.bar))) 

またはその他の構文で:

var output = (from item in result 
       from innerItem in item.foo 
       where filter.Contains(innerItem.bar) 
       select item); 
0

使用Contains

result = result.Where(x => x.foo.Any(i => filter.Contains(i.bar))); 
0

おそらく単純なAnyContainsメソッドが必要です。これを行うことができます。

result.Where(x => x.foo.Any(f=> filter.Contains(f.bar)); 
関連する問題