如何使用表达式针对用户定义的数据类型检查 !=null
本文关键字:检查 数据类型 null 定义 表达式 何使用 用户 | 更新日期: 2023-09-27 18:33:02
我是表达式的新手。我正在尝试这个,但它似乎不起作用。
ParameterExpression pe = Expression.Parameter(typeof(Customer));
Expression left = Expression.Property(pe, "OrderList");
Expression right = Expression.Constant(null, typeof(Nullable));
Expression res = Expression.NotEqual(left, right);
我得到了一个"无效操作异常"。在简单的 If-Else 语句中看起来像这样
if(custObj.OrderList != null)
{...}
任何帮助都会很棒。
只需使用
Expression right = Expression.Constant(null, left.Type);
它将为您提供与左操作数(在您的情况下为属性)类型相同的null
常量。
问题是您正在比较不同类型的对象。你可以通过使用Expression.Constant(object value)
重载来解决这个问题,我假设属性OrderList
的类型是通过引用的,如果不是,则无法进行此比较。
ParameterExpression pe = Expression.Parameter(typeof(Customer));
Expression left = Expression.Property(pe, "OrderList");
Expression right = Expression.Constant(null);
Expression res = Expression.NotEqual(left, right);