OrderBy auf eine Nullable<int> mit einem Standard-Wert in Entity Framework
Sind wir migrieren von code zu verwenden, Entity Framework und haben eine Abfrage, die versucht zu Sortieren, die auf eine null-Feld und bietet eine Standard-sort-value ist der Wert null ist über die Null-Werte zulässt.GetValueOrDefault(T) Funktion.
Jedoch bei der Ausführung gibt es den folgenden Fehler:
LINQ to Entities nicht erkennt die Methode 'Int32 GetValueOrDefault(Int32) - Methode, und diese Methode kann nicht übersetzt werden, in einen laden zu Ausdruck.
Die Abfrage sieht wie folgt aus:
int magicDefaultSortValue = 250;
var query = context.MyTable.OrderBy(t => t.MyNullableSortColumn
.GetValueOrDefault(magicDefaultSortValue));
Vom diese Antwort kann ich sehen, dass es einen Weg gibt, um "übersetzungen" in die EDMX. Könnten wir schreiben eine ähnliche übersetzung für das Koaleszenz-Funktion?
HINWEIS: Als ich versuchte, die ??
- coalescing-operator anstelle von GetValueOrDefault in der Abfrage funktioniert es. Also vielleicht alles, was, die arbeiten könnten genutzt werden?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, Sie fand Ihre Antwort. Wenn Sie
??
EF generiert die SQL mit einerCASE
wählen Sie Ihre Art von Wert, wenn der Wertnull
, und sortiert dann auf, dass.erzeugen die folgenden sql:
Als ein beiseite, ich würde empfehlen, sich LINQPad mit denen Sie die Arbeit mit Ihrem EF-Modelle und zeigen Sie die sql generiert wird. Auch ist es hilfreich zu wissen, über die EntityFunctions Klasse und SqlFunctions Klasse, wie Sie den Zugriff auf mehrere nützliche Funktionen.
??
um zu arbeiten, ich hatte gehofft, nicht zu haben, Sie zu Bearbeiten meinen vorhandenen Abfragen (schriftlich gegen eine LINQ To SQL-Kontext), die wurden bereits mit GetValueOrDefault().