myCSharp.de - DIE C# und .NET Community (https://www.mycsharp.de/wbb2/index.php)
- Entwicklung (https://www.mycsharp.de/wbb2/board.php?boardid=3)
-- Grundlagen von C# (https://www.mycsharp.de/wbb2/board.php?boardid=88)
--- Entity Framework Core Abfrage sortieren (https://www.mycsharp.de/wbb2/thread.php?threadid=122174)


Geschrieben von mchrd am 11.09.2019 um 12:05:
  Entity Framework Core Abfrage sortieren
Hallo zusammen,

ich würde gerne eine Abfrage (m zu n Beziehung) mittels Entity Framework Core tätigen und das Ergebnis gerne nach einer Entität sortieren lassen welche ich mittels Include einbeziehe.

Im Bild seht ihr eine Beispielhafte Beziehung.

Mittels

C#-Code:
var erg = _db.Gebäude.Include(x => x.GebäudeHatRäume).ThenInclude(x => x.Raum).ToList()

könnte ich jetzt eine Abfrage erstellen. Allerdings möchte ich, dass die Liste nach den Namen der Räume sortiert wird.

Wenn ich das .OrderBy(x => x....) verwende kann ich nur nach der ID oder dem Namen der Gebäude sortieren lassen.

Über Tipps wäre ich dankbar.


Geschrieben von Palladin007 am 11.09.2019 um 17:39:
 
GebäudeHatRäume ist im Model eine Liste, oder?
Wie willst Du anhand eines Items von einer Liste sortieren? Du musst dir also ein Item suchen, das Du dann zum Sortieren nutzen möchtest, z.B. indem Du das erste Item aus der Liste nutzt.
Probier da Mal herum und schau, was EFCore noch alles übersetzen kann.

Aber achtung: Kann EFCore deinen Code nicht nach SQL übersetzen, erfärst Du das nur als Warnung im Log, sofern vorhanden.
Das kannst Du aber umstellen, wenn Du die DbContextOptions erstellst:

C#-Code:
var options = new DbContextOptionsBuilder<YourDbContext>() // Muss nicht zwingend generisch sein
    .ConfigureWarnings(warnings =>
    {
        warnings.Throw(RelationalEventId.QueryClientEvaluationWarning));
    }
    .Options;

Dann kriegst Du eine Exception anstatt eines Log-Eintrags.
Ich persönlich würde das so lange wie möglich drin lassen, damit man möglichst viele solcher Situationen findet. Für den produktiven Betrieb (release-Build oder per Config einstellbar) kann man das dann ja wieder heraus nehmen, es könnte zwar die Performance verschlechtern, aber der Nutzer diese unverständlichen Fehler nicht mehr.


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 22.09.2019 19:05