我是表达新手。我试过这个并且它似乎没有用。
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);
我得到了一个" InvalidOperationException"。简单的If-Else语句看起来像这样
if(custObj.OrderList != null)
{...}
任何帮助都会很棒。
答案 0 :(得分:2)
只需使用
Expression right = Expression.Constant(null, left.Type);
它将为您提供与左操作数相同类型的null
常量(在您的情况下属性)。
答案 1 :(得分:1)
问题是您正在比较不同类型的对象。
您可以使用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);