以OR方式将IQueryable链接在一起

时间:2015-03-09 01:39:08

标签: linq iqueryable

我有一些我想要的ORu一起。我的理解是使用Where将它们组合在一起将它们链接在一起(尽管我的理解可能有问题。)

这是我想要一起查询的一个例子,而不是使用所有链接的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的专家,我希望得到一些指导?

1 个答案:

答案 0 :(得分:2)

看起来你可以使用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?