加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 22:01:21 所属栏目:百科 来源:网络整理
导读:假设我有一个类似的查询: r = r.Where(x = iEnumerableMachineNames.Contains(x.Machine.Name) || x.Server==true); 例如,有没有办法在语句之外构建谓词(我认为它就是所谓的) t = (x = iEnumerableMachineNames.Contains(x.Machine.Name));s = (x = x.Serve
假设我有一个类似的查询:

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.

解决方法

您可以动态构建表达式,但不像伪代码那样简单 – 它需要反射和表达式树( read this).

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

bool testMachineName;
bool testIsServer;

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读