LINQ WHERE与OR

Mas*_*son 11 c# linq where-clause

我使用LINQ来创建我的where子句,如下所示:

var query = from x in context.Xs
            select x;

if (y == ...)
{
    query = query.Where(x => x.Y == 1);
}
Run Code Online (Sandbox Code Playgroud)

我有很多这些"if .... where"语句.我遇到的问题是,所有这些都加入了使用AND的子句,但我需要所有where子句使用OR.是否有一种简单的方法将此代码移植到OR代码中?或者甚至用OR做出最简单的方法是什么?

谢谢.

Fai*_* S. 8

你可以这样做:

var query = from x in context.Xs
        where
          (x.X == 1) ||
          (x.Y == 2) ||
          (x.Z == "3")
        select x;
Run Code Online (Sandbox Code Playgroud)


Oce*_*t20 7

PredicateBuilder是您解决问题的完美解决方案.它允许您继续添加单个"AND"和"OR"语句.