【发布时间】:2017-08-30 14:15:17
【问题描述】:
我有以下 Linq 查询:
var query1 = qble1.Where(x => x.name == "name" && x.id == 1);
我正在尝试将Where 子句提取到一个变量中,然后我可以在需要时将其重新应用于另一个查询。
为了给你一个稍微不同的观点(希望不要混淆问题的目的),我可以做以下事情:
Expression<Func<testClass, bool>> whereClause = x => x.name == "name" && x.id == 1;
var query1 = qble1.Where(whereClause);
这会将whereClause 变量应用于query1
我正在尝试实现与上述相反的操作,即编写查询,并将 Where 子句提取到变量 whereClause 中,例如
Expression<Func<testClass, bool>> whereClause = WhereClause of query1
这个可以吗?
我尝试这样做的原因是为了解决我在这个问题中遇到的问题:
【问题讨论】:
-
是的,您可以将其作为静态调用表达式中的第二个参数。如果你知道你想要什么覆盖,你可以通过名称来识别它。
-
换句话说,通过检查结果
IEnumerable<T>来检索传递给Enumerable.Where的predicate参数? -
@vc74 听起来对我来说是正确的
-
@FilipCordas 你能提供更多细节吗,我不完全理解你的评论
-
@Alex 你为什么要这么做?为什么不直接构建谓词然后分配它们?