「理解EntityFramework 中的「帶有語句主體的lambda 表達式無法轉換為表達式樹」錯誤」
「A帶有語句主體的lambda 表達式無法轉換為表達式樹」嘗試將帶有語句主體的lambda表達式轉換為表達式樹時發生錯誤。此錯誤通常出現在實體框架場景中,其中使用 LINQ 查詢來檢索資料。
導致此錯誤的一個可能原因是使用 Linq-To-SQL 時,其中只能將簡單表達式應用於立即數=> 右邊操作員。造成此限制的原因是這些表達式不會被執行,而是直接轉換為 SQL 查詢。
作為此問題的解決方案,重構 lambda 表達式以排除語句體。例如,重寫以下程式碼:
Obj[] myArray = objects.Select(o => { var someLocalVar = o.someVar; return new Obj() { Var1 = someLocalVar, Var2 = o.var2 }; }).ToArray();
改為:
Arr[] myArray = objects.Select(o => new Obj() { Var1 = o.someVar, Var2 = o.var2 }).ToArray();
此修改刪除了語句主體,從而能夠將 lambda 表達式轉換為表達式樹並消除錯誤。
以上是為什麼無法將帶有語句體的 Lambda 表達式轉換為實體框架中的表達式樹?的詳細內容。更多資訊請關注PHP中文網其他相關文章!