我需要將參數傳遞給需要Expression<Func<T, bool>>
的方法。將始終返回true的Linq表達式
如何傳遞一個總會返回true
的表達式?
使用obj => true
不起作用,因爲框架在運行時抱怨它無法從True常量中確定memeber類型。
我需要將參數傳遞給需要Expression<Func<T, bool>>
的方法。將始終返回true的Linq表達式
如何傳遞一個總會返回true
的表達式?
使用obj => true
不起作用,因爲框架在運行時抱怨它無法從True常量中確定memeber類型。
如果你有這樣的
void TakeExpression<T>(Expression<Func<T, bool>> expr)
一個功能你應該這樣調用它,指定T類:
TakeExpression<int>(_ => true)
它應該工作。
是的,通常在Linq它正在處理源對象,所以它可以從中獲得它的
確切地說,源類型不能被隱式確定,所以你應該明確地傳遞它。 – thinkbeforecoding 2011-03-31 13:07:57
有兩個問題在這裏:
1)如果你傳遞一個斷言,這樣你總是希望返回true,那麼它是沒有太大的謂語的。您可能可以忽略您嘗試進行的任何呼叫。
2)如果你只想返回true,你可以簡單的使用更詳細的lambda語法得到你想要的東西:
sample.AsQueryable().Where((x) => { return true; });
更詳細的語法允許您指定接近一個匿名函數,而仍然是一個表達。
您需要定義要傳遞的參數類型:
(object o) => true
或者
(int a) => true
請提供一個完整的例子,告訴我們您正在使用哪個提供商。 – 2011-03-31 12:32:48
我認爲你的錯誤是在別的地方。這編譯:新列表