EntityFramework 中帶有語句主體錯誤的Lambda 表達式
在EntityFramework 中,使用lambda 表達式時遇到的常見錯誤是表達式時遇到的:
「帶有語句主體的lambda 表達式無法轉換為表達式樹。在 EntityFramework 中,lambda 表達式用於指定查詢中的條件或轉換。但是,表達式不能包含修改變數或執行操作的語句。
示例:
以下代碼片段會觸發錯誤:
說明:
Obj[] myArray = objects.Select(o => { var someLocalVar = o.someVar; return new Obj() { Var1 = someLocalVar, Var2 = o.var2 }; }).ToArray();
在此範例中,lambda 表達式使用在傳回物件之前將值賦給局部變數someLocalVar的語句體。但是,此語句主體無法轉換為表達式樹以供 EntityFramework 執行。
解決方案:
要解決此錯誤,請重寫 lambda 表達式,使其僅包含表達式。在這種情況下,這意味著刪除語句主體並直接建構 Obj 物件:
現在 lambda 表達式僅由一個表達式組成,可以轉換為表達式樹以供 EntityFramework 處理。
以上是為什麼帶有語句主體的 Lambda 表達式會在實體框架中導致錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!