Ich habe ein Szenario, in dem ich nach einer Spalte sortieren muss, die eine Navigationsproperty für die Benutzerentität in meinem EF-Modell ist.
Die Entitäten: Benutzer --> Länder 1:n Beziehung
Ein einfacher SQL-Abfrage wäre wie folgt:
SELECT UserId, u.Name, c.Name
FROM users u join countries c on u.CountryId = c.CountryId
ORDER BY c.Name asc;
Also habe ich versucht, die obige SQL-Abfrage mit Linq to Entities wie folgt nachzubilden - (Lazy Loading ist aktiviert)
entities.users.OrderBy(feld => feld.country.Name).ToList();
Aber diese Abfrage gibt meine Länder nicht nach ihrem Namen sortiert zurück, wie es die native SQL-Abfrage oben tut.
Ich bin jedoch ein wenig weitergegangen und habe folgendes gemacht:
var aufgelisteteBenutzer = entities.users.AsEnumerable();
benutzer = aufgelisteteBenutzer.OrderBy(felder => felder.country.Name).ToList();
Aber das Sortieren des aufgelisteten Benutzers für etwa 50 Datensätze dauerte ca. 7 Sekunden.
Gibt es einen besseren Weg, wie man das Aufzählen vermeiden kann, ohne einen anonymen Typ zurückzugeben?
Danke
EDIT
Ich habe einfach vergessen zu erwähnen, dass der EF-Anbieter ein MySQL-Anbieter ist und nicht MS SQL. Tatsächlich habe ich gerade die gleiche Abfrage auf einer replizierten Datenbank in MS SQL ausprobiert und die Abfrage funktioniert gut, d.h. der Ländername ist korrekt sortiert, also sieht es so aus, als ob ich keine andere Möglichkeit habe, als das Ergebnis von MySQL zu bekommen und das Sortieren im Arbeitsspeicher am aufzählbaren Objekt auszuführen.