我試圖創建一個簡單的表達我有這樣的簡單類型:簡單表達式組合
public class BSType
{
public int Length { get; set; }
public string Name { get; set; }
}
中,我試圖動態創建過濾器表達式,這將是
(bsType) => bsType.Length == 3
我創建了一個表達式,它返回給我的常量3
var right = Expression.Constant(3);
然後我有另一個表達式,我的Func<BSType, int>
S的看起來像這樣
Expression<Func<BSType, int>> left = bsType => bsType.Length;
當我嘗試向他們提供平等的表達,像這樣
Expression.Equal(left, right);
比較我得到一個錯誤:
The binary operator Equal is not defined for the types 'System.Func`2[ExpressionBuilder.BSType,System.Int32]' and 'System.Int32'
我覺得我需要將類型的參數傳遞給函數的左側,以便它可以解析長度,但我不確定如何這樣做,任何人都可以指向正確的方向?
我已經更新了我的問題,以顯示大致發生了什麼 –
' Expression>''你不需要提取int的一部分,這樣'left'是一個'int'而不是'Expression >'? –
@TZZA耶我該怎麼做?以某種方式生成可以與實體框架工作的表達式 –