首頁 >後端開發 >C++ >為什麼帶有語句主體的 Lambda 表達式會在實體框架中導致錯誤?

為什麼帶有語句主體的 Lambda 表達式會在實體框架中導致錯誤?

DDD
DDD原創
2024-12-31 19:42:09926瀏覽

Why Does My Lambda Expression with a Statement Body Cause an Error in Entity Framework?

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn