首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LinqKit PredicateBuilder添加到linq查询

LinqKit PredicateBuilder添加到linq查询
EN

Stack Overflow用户
提问于 2015-03-10 17:40:36
回答 1查看 1.3K关注 0票数 0

我有一个linq查询,我想添加一些额外的、可选的WHERE条件到使用LinqKit谓词生成器。但是,我很难让额外的谓词工作。

这是我最初的查询:

代码语言:javascript
复制
var query = (from OP in ctx.OrganisationProducts
             where OP.OrganisationID == orgID
             orderby OP.Product.Name, OP.Product.VersionName
             select OP).Include("Product");

正如你所看到的,里面有JOIN。然后,如果需要,我希望添加额外的谓词:

代码语言:javascript
复制
if(!includeDisabledP42Admin || !includeDisabledOrgAdmin)
{
    var pred = PredicateBuilder.True<OrganisationProduct>();
    if (!includeDisabledP42Admin)
        pred.And(op => op.Enabled);
    if (!includeDisabledOrgAdmin)
        pred.And(op => op.AccessLevel == "NA" || op.AccessLevel == "NU");
    query = query.Where(pred);
}

但是,生成的SQL没有变化,查询返回的行数相同。

我想我可能不得不按这样的方式进行扩展转换:

代码语言:javascript
复制
query = query.AsExpandable().Where(pred);

但这会导致运行时错误。

我认为问题在于,我将谓词添加到一个已经不再是纯OrganisationProduct对象的查询中,不过,我想就如何在正确的位置插入谓词提出建议。

谢谢大家:-)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-10 17:53:17

您必须将And的返回值赋值给谓词:

代码语言:javascript
复制
pred = pred.And(op => op.Enabled);

附带注意:您可能喜欢不使用这个谓词生成器但语法相同的Expand/AsExpandable

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28970489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档