也许是一个简单的问题,我试图从一个表中获取结果,其中Name列包含所有搜索项的数组.我正在创建一个查询并循环遍历我的搜索字符串,每次都分配query = query.Where(...);. 似乎只使用了最后一个术语,我猜想因为我每次都试图限制同一个字段.如果我叫.ToArray().AsQueryable已()在每次迭代我能得到我要找的cumlative restrinction行为,但它有一个简单的方法来做到这一点只能通过延迟执行运营商?
谢谢!
假设我们需要应用几个条件来从一个名为"Things"的表中进行选择(未知计数和性质)
如果条件已知,我们可以写
db.Things.Where(t=>foo1 && foo2 || foo3);
Run Code Online (Sandbox Code Playgroud)
但是如果我们必须以编程方式构建Where条件,我可以想象我们如何应用ANDed条件
IQuerable DesiredThings = db.Things.AsQuerable();
foreach (Condition c in AndedConditions)
DesiredThings = DesiredThings.Where(t => GenerateCondition(c,t));
Run Code Online (Sandbox Code Playgroud)
ORed条件怎么样?注意:我们不想执行union,unique或任何其他代价高昂的操作,我们希望生成一个查询,好像我们将它写成ad-hock
提前致谢.
PredicateBuilder:动态编写表达式谓词