我要動態地創建一個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)'等。 –