LINQ WHERE与OR
我使用LINQ创建我的where子句,如下所示:
var query = from x in context.Xs select x; if (y == ...) { query = query.Where(x => xY == 1); }
我有很多这些“if …. where”的陈述。 我遇到的问题是,所有这些都加入了使用AND的子句,但我需要所有where子句使用OR。 有没有一种简单的方法将此代码移植到OR代码中? 或者甚至用OR做出最简单的方法是什么?
谢谢。
PredicateBuilder是您解决问题的完美解决方案。 它允许您继续将单个“AND”和“OR”语句一起添加。
你可以这样做:
var query = from x in context.Xs where (xX == 1) || (xY == 2) || (xZ == "3") select x;
我建议使用表达式树动态构建您的查询:
(MSDN)如何:使用表达式树构建动态查询
您还可以使用PredicateBuilder
(在引擎盖下执行类似操作)动态构建谓词,然后将最终谓词传递给Where方法。