2012-04-26 19 views
0

に参加し、私は以下のような基準ボックスを持っている:LINQの私は、LINQクエリ内の複数の条件を結合するために必要な複数の条件(数事前に知られていない)

enter image description here

現在、イムのみ扱うことができるよりも、クエリを使用して単一のタグ:

私のようなものが必要
var c = *text after the t:* 
var r = rs.Returns.Where(x => x.Lines.Any(y => y.Tags.Any(z => z.Name.Contains(c)))); 

(これは間違っている可能性があります):

var r = rs.Returns.Where(x => x.Lines.Any(y => y.Tags.Any(z => z.Name.Contains(*1st Tag*)) && y.Tags.Any(z.Name.Contains(*2nd Tag*)))); .. etc 

tagsLineのすべてが検索され、ANDが適用されるようにします。そのようなことを達成する簡単な方法はありますか?

事前に感謝します。

答えて

0

私はあなたがこのような何かを探していると思う:

List<string> tags = new List<string>() { "tag1", "tag2" }; 

var query = rs.Returns.AsEnumerable(); 
foreach(string tag in tags) 
{ 
    string tmp = tag; 
    query = query.Where(x => x.Lines.Any(y => y.Tags.Any(z => z.Name.Contains(tmp)))); 
} 
2
var r = rs.Returns.Where(x => x.Lines.Any(y => searchTags.All(stag => y.Tags.Any(z => z.Name.Contains(stag))))); 

searchTagsを検索するためにすべてのタグを含める必要があります。ループを使用する必要はありません。

関連する問題