我有一個函數功能是這樣的:如何Func鍵<T,bool>轉換爲表達<Func<T,bool>>
Func<MyClass, bool> func = x=>Id == 5;
我怎樣才能將其轉換爲:
Expression<Func<MyClass, bool>>
我有一個函數功能是這樣的:如何Func鍵<T,bool>轉換爲表達<Func<T,bool>>
Func<MyClass, bool> func = x=>Id == 5;
我怎樣才能將其轉換爲:
Expression<Func<MyClass, bool>>
試試這個:
Func<MyClass, bool> func = x=>Id == 5;
Expression<Func<MyClass, bool>> expr = mc => func(mc);
您可以創建一個表達式來表示對創建的委託的調用。但大多數情況下,當您使用Expression
時,您需要這樣做來了解代碼的作用(例如將其轉換爲SQL)。你不能用表達式來調用一個不透明的函數。
你可以這樣寫:
Expression<Func<MyClass,bool>> expr = x=>Id == 5;
這將設置expr
成爲Id == 5
表達式樹。
如果你這樣做:
Func<MyClass, bool> func = x=>Id == 5;
Expression<Func<MyClass, bool>> expr = mc => func(mc);
那麼這將設置expr
成爲呼叫的表達式樹func
,不是爲了func
身體表達式樹。
表達式是Lambda函數的中間表示形式。 Func本身就是編譯的lambda函數。不要以爲你可以在兩者之間進行轉換。你爲什麼需要這樣做? – akhisp 2013-02-16 05:41:50