0

linqクエリ内で複数の基準を結合する必要があります。以下のような基準ボックスがあります。

ここに画像の説明を入力してください

現在、単一のタグしか処理できないクエリを使用しています。

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

すべてのtags持っLineているものが検索ANDされて適用されるように。そのようなことを達成する簡単な方法はありますか?

よろしくお願いします。

4

2 に答える 2

2
var r = rs.Returns.Where(x => x.Lines.Any(y => searchTags.All(stag => y.Tags.Any(z => z.Name.Contains(stag)))));

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

于 2012-04-26T20:30:18.907 に答える
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))));
}
于 2012-04-26T20:29:34.787 に答える