繁体   English   中英

使用具有实体框架的LINQ语句以编程方式构建查询

[英]Programmatically building a query with LINQ statement with entity framework

假设我有一个类似的查询:

r = r.Where(x => iEnumerableMachineNames.Contains(x.Machine.Name) 
                 || x.Server==true);

例如,有没有办法在语句之外构建谓词(我认为它就是所谓的)

t = (x => iEnumerableMachineNames.Contains(x.Machine.Name));
s = (x => x.Server==true)
q = t.Or(s);
r = r.Where(x => q);

基本上我想基于输入参数以编程方式构建我的查询,用于EF 5。

您可以动态构建表达式,但不像伪代码那样简单 - 它需要反射和表达式树( 阅读本文 )。

一个简单的方法来完成你想要做的事情是使用布尔标志来短路谓词的不同部分:

bool testMachineName;
bool testIsServer;

r = r.Where( x =>
    ( !testMachineName || iEnumerableMachineNames.Contains( x.Machine.Name ) ) ||
    ( !testIsServer || x.Server ) );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM