以 OR 方式将 IQueryable 链接在一起
Chaining together IQueryable in an OR fashion
我有一些 IQueryable,我想一起进行 OR。我的理解是使用 Where
将它们链接在一起,结果将它们组合在一起(尽管我的理解可能有误。)
这是一个查询示例,我想用 OR 组合在一起,而不是使用所有链式 Where
子句:
var query = query.Where(x => x.Value == 1)
.Where(x => x.Name == name);
相反,我正在寻找类似的东西:
var query = query.Where(x => x.Value == 1)
.Or(x => x.Name == name)
.Or(x => x.SomeOtherValue == something else)
.Or(x => x.AChildObject.Items.Where(item => item.SomeValue == yet something else));
...在我的例子中,我可能需要像上面那样将 10 个或多个项目链接在一起。
我一直在查看 this one 之类的帖子,我想我可以使用一系列 ||
语句将事物链接在一起,但我不确定这是否可行。它可能会变得很难阅读。
在网上研究这个过程中,我 运行 阅读了关于 PredicateBuilders 等内容丰富的文章。我无论如何都不是 LINQ 方面的专家,我希望得到一些指导?
看来你可以只使用 OR 运算符。
var query = query.Where(x => x.Value == 1
|| x.Name == name)
|| x => x.SomeOtherValue == something else)
|| x => x.AChildObject.Items.Where(item => item.SomeValue == yet something else))
如果合并来自不同来源的数据,您也可以使用 Union 或 Concat,请参阅 Linq union usage?
我有一些 IQueryable,我想一起进行 OR。我的理解是使用 Where
将它们链接在一起,结果将它们组合在一起(尽管我的理解可能有误。)
这是一个查询示例,我想用 OR 组合在一起,而不是使用所有链式 Where
子句:
var query = query.Where(x => x.Value == 1)
.Where(x => x.Name == name);
相反,我正在寻找类似的东西:
var query = query.Where(x => x.Value == 1)
.Or(x => x.Name == name)
.Or(x => x.SomeOtherValue == something else)
.Or(x => x.AChildObject.Items.Where(item => item.SomeValue == yet something else));
...在我的例子中,我可能需要像上面那样将 10 个或多个项目链接在一起。
我一直在查看 this one 之类的帖子,我想我可以使用一系列 ||
语句将事物链接在一起,但我不确定这是否可行。它可能会变得很难阅读。
在网上研究这个过程中,我 运行 阅读了关于 PredicateBuilders 等内容丰富的文章。我无论如何都不是 LINQ 方面的专家,我希望得到一些指导?
看来你可以只使用 OR 运算符。
var query = query.Where(x => x.Value == 1
|| x.Name == name)
|| x => x.SomeOtherValue == something else)
|| x => x.AChildObject.Items.Where(item => item.SomeValue == yet something else))
如果合并来自不同来源的数据,您也可以使用 Union 或 Concat,请参阅 Linq union usage?