Heim >Backend-Entwicklung >C++ >Warum kann ich einen Lambda-Ausdruck mit einem Anweisungstext nicht in einen Ausdrucksbaum in Entity Framework konvertieren?
„Verstehen des Fehlers „Ein Lambda-Ausdruck mit einem Anweisungstext kann nicht in einen Ausdrucksbaum konvertiert werden“ in EntityFramework“
Der Fehler „A Beim Versuch, einen Lambda-Ausdruck mit einem Anweisungshauptteil in eine Ausdrucksbaumkonvertierung zu konvertieren, tritt ein Fehler auf. Dieser Fehler tritt häufig in Entity Framework-Szenarien auf, in denen LINQ-Abfragen zum Abrufen von Daten verwendet werden.
Eine mögliche Ursache für diesen Fehler ist die Verwendung von Linq-To-SQL, bei der nur einfache Ausdrücke auf das Unmittelbare angewendet werden können rechts vom => Operator. Der Grund für diese Einschränkung liegt darin, dass diese Ausdrücke nicht ausgeführt, sondern direkt in SQL-Abfragen übersetzt werden.
Als Lösung für dieses Problem können Sie den Lambda-Ausdruck umgestalten, um Anweisungskörper auszuschließen. Schreiben Sie beispielsweise den folgenden Code um:
Obj[] myArray = objects.Select(o => { var someLocalVar = o.someVar; return new Obj() { Var1 = someLocalVar, Var2 = o.var2 }; }).ToArray();
Wie folgt:
Arr[] myArray = objects.Select(o => new Obj() { Var1 = o.someVar, Var2 = o.var2 }).ToArray();
Diese Änderung entfernt den Anweisungskörper, wodurch die Konvertierung des Lambda-Ausdrucks in einen Ausdrucksbaum ermöglicht und beseitigt wird der Fehler.
Das obige ist der detaillierte Inhalt vonWarum kann ich einen Lambda-Ausdruck mit einem Anweisungstext nicht in einen Ausdrucksbaum in Entity Framework konvertieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!