gpt4 book ai didi

c# - 构建动态 LINQ 表达式时如何检测 IsNull/NotNull?

转载 作者:可可西里 更新时间:2023-11-01 07:44:32 25 4
gpt4 key购买 nike

我正在构建稍后计算的动态 LINQ 表达式。因此,例如,如果我想知道某个属性是否等于某个值,我会这样做:

// MemberExpression property;
// int? val;
Expression.Equal(property, Expression.Constant(val))

但是,我似乎找不到检测 val 是否为 Null 或 NOT Null 的方法。有人可以向我推荐该怎么做吗?我试过这个:

Expression.Equal(property, Expression.Constant(null, property.Type));

但显然,那是行不通的。

最佳答案

好吧,事实证明@Raphaël Althaus 是对的——部分问题出在我构建谓词的地方。所以看起来这实际上确实给了你空检查:

Expression.Equal(property, Expression.Constant(null, property.Type));

这意味着您可以在查询中动态应用 Where 条件,例如:

// IQueryable<T> query;
// var arg = Expression.Parameter(typeof(T), "p");

var exp = Expression.Equal(property, Expression.Constant(null, property.Type));
// for NOT NULL use Expression.NotEqual
var predicate = Expression.Lambda<Func<T, bool>>(exp, arg);
return query.Where(predicate);

感谢您的帮助!

关于c# - 构建动态 LINQ 表达式时如何检测 IsNull/NotNull?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18795190/

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