我要动态地创建一个lambda表达式是:创建Lambda表达式有了3个条件
(o => o.Year == year && o.CityCode == cityCode && o.Status == status)
,我这样写:
var body = Expression.AndAlso(
Expression.Equal(
Expression.PropertyOrField(param, "Year"),
Expression.Constant(year)
),
Expression.Equal(
Expression.PropertyOrField(param, "CityCode"),
Expression.Constant(cityCode)
)
,
Expression.Equal(
Expression.PropertyOrField(param, "Status"),
Expression.Constant(status)
)
);
但对于这个区块的代码:
Expression.Equal(
Expression.PropertyOrField(param, "Status"),
Expression.Constant(status)
)
我得到一个错误:
Cannot convert from 'System.Linq.Expressions.BinaryExpression' to 'System.Reflection.MethodInfo'
如何将3个条件添加到lambda表达式?
是什么'Status'? –
@MongZhu我更新问答。请再看一遍 – Arian
'AndAlso'是一个'BinaryExpression',即有2个操作数。如果你有2个以上,你必须链接多个'AndAlso',即'AndAlso(AndAlso(op1,op2),op3)'等。 –