nik*_*3ro 15 c# linq asp.net-mvc entity-framework
我正在构建动态LINQ表达式,稍后会对其进行评估.因此,例如,如果我想知道某些属性是否等于某个值,我会这样做:
// MemberExpression property;
// int? val;
Expression.Equal(property, Expression.Constant(val))
Run Code Online (Sandbox Code Playgroud)
但是,我似乎找不到一种方法来检测val是Null还是Null.有人可以向我推荐怎么做吗?我试过这个:
Expression.Equal(property, Expression.Constant(null, property.Type));
Run Code Online (Sandbox Code Playgroud)
但很明显,那是行不通的.
nik*_*3ro 22
好的,结果是@RaphaëlAlthaus是对的 - 问题部分在于我构建谓词.所以这似乎确实给你空检查:
Expression.Equal(property, Expression.Constant(null, property.Type));
Run Code Online (Sandbox Code Playgroud)
这意味着您可以在查询中动态应用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);
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助!
| 归档时间: |
|
| 查看次数: |
10942 次 |
| 最近记录: |