Linq如何使用OR?

use*_*438 3 .net c# linq

有人可以告诉我如何在LinQ语句上执行OR吗?例如,如果我有两个扩展方法:ByIdA()ByIdB().然后我想使用它们类似于:

var yada = _something.Entity.ByIdA().ByIdB();
Run Code Online (Sandbox Code Playgroud)

上面将调用两个并返回A和B都为真的行.如何编写它以使用OR并返回A或B为真的行?

我有一个带有子表B的Icollection的实体A,所以我想从A返回行,其中Ax = 1或者By = 1.

Eri*_*res 7

你需要在哪里使用

_collection.Where(x => x.ByIdA() || x.ByIdB());
Run Code Online (Sandbox Code Playgroud)

  • 没错,我不太确定他用`_something.Entity`得到了什么.有点混乱. (2认同)

Dou*_*las 6

要返回两个集合的并集,可以使用Union运算符.

_something.Entity.ByIdA().Union(_something.Entity.ByIdB())
Run Code Online (Sandbox Code Playgroud)

如果您的集合没有任何公共元素,您可以使用Concat更便宜的运算符,因为它不检查重复项.