Neu in .NET 7.0 [30]: LINQ-Operatoren Order() und OrderDescending()
Microsoft hat die Operatoren zum Sortieren von Listen um verkürzte Varianten ergänzt.
(Bild: Pincasso/Shutterstock)
- Dr. Holger Schwichtenberg
Die Sortieroperatoren OrderBy() und OrderByDescending() gibt es in der Language Integrated Query (LINQ) seit diese in .NET Framework 3.5 im Jahr 2007 erschienen ist.
Neu in .NET 7.0 ist, dass es nun zusätzlich jeweils eine Variante ohne das Wort "By" gibt. Microsoft hat bei den LINQ-Operatoren die Methoden Order() und OrderDescending() als Ergänzung zu OrderBy() und OrderByDescending() eingeführt.
Videos by heise
Die neuen Methoden Order() und OrderDescending() erlauben eine verkĂĽrzte Syntax zum Sortieren von Listen mit elementaren Datentypen.
Einsatzbeispiel
Mit den neuen Methoden Order() und OrderDescending() reicht fĂĽr eine Liste von Zahlen, Zeichenketten oder Datumsangaben zum aufsteigenden Sortieren nun statt
var datenlisteSortiert = datenliste.OrderBy(x => x);
einfacher
var datenlisteSortiert = datenliste.Order();​
und zum absteigenden Sortieren statt
var datenlisteSortiert = datenliste.OrderByDescending(x => x);​
nun
var datenlisteSortiert = datenliste.OrderDescending();
Keine UnterstĂĽtzung in Entity Framework Core
Order() und OrderDescending() ohne "By" und ohne Parameter arbeiten mit LINQ-to-Objects (also IEnumerable<T>), allerdings versagt Entity Framework Core beim Versuch, diese neuen Operatoren auf eine Datenbank (also IQueryable<T>) anzuwenden. Dieser Code
var q = (from f in efcore_context.FlightSet
select f.Departure)
.OrderDescending()
.ToList();
liefert den Laufzeitfehler The LINQ expression 'DbSet<Flight>() .Select(f => f.Departure).OrderDescending()' could not be translated..
Denselben Effekt gibt es auch immer noch mit den bereits in .NET 6.0 eingeführten LINQ-Operatoren wie MinBy(), MaxBy(), DistinctBy() und Chunk(), die selbst in Entity Framework Core 7.0 noch nicht unterstützt werden, wie der zugehörige Issue auf GitHub zeigt.
(rme)