這是一個後續的問題,我問早些時候在這裏看到:是否有一些Funcs不可能轉換爲相應的表達式?
Confused about passing Expression vs. Func arguments
接受的回答者也表明重構的表達式中引用的局部對象到的東西,LINQ到實體能夠實際執行對後備存儲(在我的情況下SQL Server)
我花了很長時間試圖想出一些東西,將爲我正在做的工作。我原來
Func<Thing, bool> whereClause
被引用當地字典對象,LINQ到實體或SQL會在運行時不會明白。我試圖重構成多個列表僞造字典,然後陣列。每次,我得到運行時錯誤,抱怨上下文無法識別列表上的方法或數組索引器。
最終我放棄了,只是提供了一個額外的方法,當我不能拿出正確的表達式時,需要一個Func參數。
我不是試圖找到一個解決我的具體的問題,我只是在一般的想知道,如果它是總是可能轉換,說
Func<Thing, bool>
爲等效
Expression<Func<Thing, bool>>
它可以運行Linq到實體。 或者如果有很多查詢的例子,你只需要必須將數據先拉到內存中。
謝謝埃裏克。這些只是語言本身提供的限制,是正確的?含義你可以滿足所有這些條件,但仍然讓Linq to SQL無法翻譯它? – Erix 2012-01-04 20:07:43
@Erix:正確。我不知道LINQ to SQL有什麼限制。 – 2012-01-04 20:28:47