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 回答