gpt4 book ai didi

c# - LinqKit PredicateBuilder 返回所有或非行

转载 作者:太空狗 更新时间:2023-10-29 21:02:05 26 4
gpt4 key购买 nike

我开始使用 LinqKitPredicateBuilder使用 Linq 表达式无法实现的 OR 条件创建谓词。

我面临的问题是,如果我以 PredicateBuilder.True<MyEntity>() 开头它返回所有行 如果我以 PredicateBuilder.False<MyEntity>() 开头它返回非行,除了我使用的表达式!看下面的代码:

        var pre = PredicateBuilder.True<MyEntity>();
pre.And(m => m.IsActive == true);

using (var db = new TestEntities())
{
var list = db.MyEntity.AsExpandable().Where(pre).ToList();
dataGridView1.DataSource = list;
}

它应该返回 IsActive == true 的行,但它返回所有行!

我已经尝试了 PredicateBuilder.True 的所有可能组合| PredicateBuilder.FalseAnd | Or方法,但没有一个有效!

最佳答案

And 扩展方法不会修改 原始谓词 - 它返回一个代表原始谓词 AND< 的谓词ed 与指定的谓词一起。

实际上,您的操作不会更改 pre 变量引用的谓词,这意味着根据您是否将原始谓词初始化为 ,您最终得到所有记录或没有记录truefalse

尝试:

    var pre = PredicateBuilder.True<MyEntity>();
pre = pre.And(m => m.IsActive);

如果您计划将谓词OR 在一起,请记住以false 初始谓词开始。

    var pre = PredicateBuilder.False<MyEntity>();
pre = pre.Or(m => m.IsActive);

关于c# - LinqKit PredicateBuilder 返回所有或非行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15325245/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com