Gibt es eine Möglichkeit zu bekommen, Linq-to-entities zu bewerten, der lokale Ausdruck
Können sagen, Sie haben die folgende linq-Ausdruck:
from o in salesEntities.Orders where o.OrderDate < DateTime.Today.AddDays(-20) select o
Entity Framework nicht wissen, wie zu übersetzen DateTime.Heute.AddDays(-20) in eine Entity SQL-Ausdruck, und Sie erhalten die folgende Fehlermeldung:
LINQ to Entities nicht erkennt die Methode 'System.DateTime AddDays(Double)' - Methode, und diese Methode kann nicht übersetzt werden, in einen laden zu Ausdruck.
Also hier meine Fragen: gibt es einen Weg, um Linq to Entities zu bewerten, ein Teil der lambda-Ausdruck und ersetzen Sie es mit einem Konstanten Wert, ohne dass ich Sie deklarieren eine lokale variable, um es zu halten?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die kurze Antwort ist Nein. Alles in eine linq to entities-Ausdruck muss entweder in eine lokale variable oder können übersetzt werden in ein sql-Ausdruck vom entity framework.
LINQ-to-Entities können sich mit der örtlichen Werte, aber nicht die lokale Ausdrücke. Dein code funktioniert mit dieser kleinen änderung:
var pastDate = DateTime.Today.AddDays(-20);
from o in salesEntities.Orders where o.OrderDate < pastDate select o
AddDays
in der Abfrage (dies ist nicht einer von Ihnen), verwenden Sie dasEntityFunctions
geben.EntityFunctions
geben.Ändern Sie Ihren Ausdruck mit dem EntityFunction add-Tage wie diese: