如何使用表达式针对用户定义的数据类型检查 !=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)
{...}

任何帮助都会很棒。

如何使用表达式针对用户定义的数据类型检查 !=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);