【问题标题】:Chaining together IQueryable in an OR fashion以 OR 方式将 IQueryable 链接在一起
【发布时间】:2015-03-09 01:39:08
【问题描述】:

我有一些 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 方面的专家,我希望得到一些指导?

【问题讨论】:

    标签: linq iqueryable


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多