"Order by Col1, Col2" unter Verwendung des Entity Frameworks


117

Ich muss mit dem Entity-Framework nach 2 Spalten ordnen.

Wie geht das?

return _repository.GetSomething().OrderBy(x => x.Col1   .. Col2)?

dh

SELECT * FROM Foo ORDER BY Col1, Col2

Antworten:


244

Versuchen Sie es OrderBy(x => x.Col1).ThenBy(x => x.Col2). Es ist sowieso eine LINQ-Funktion, die nicht nur EF vorbehalten ist.


50

Ein anderer Weg:

qqq.OrderBy(x => new { x.Col1, x.Col2} )

Wie ordnen Sie absteigend auf diese Weise?
user551113

10
qqq.OrderByDescending (x => new {x.Col1, x.Col2})
parfilko

7
Bei Verwendung mit EntityFramework Core in zwei Zeichenfolgenfeldern wird die Fehlermeldung "Mindestens ein Objekt muss IComparable implementieren" angezeigt.
Sixtstorm1

26

Versuchen:

OrderBy(x => x.Col1).ThenBy(x => x.Col2)

Für eine absteigende Reihenfolge versuchen Sie Folgendes:

OrderByDescending (x => x.Col1).ThenByDescending (x => x.Col2)

1

Die folgende Sortierung erfolgt auf DB-Ebene. Nicht auf dem zurückgegebenen Ergebnis.

Versuchen:

IQueryable<a>.OrderBy("col1 asc, col2 asc")

Beispiel 1:

ctx.CateringOrders.OrderBy("Details.DeliveryDate asc, Details.DeliveryTime asc")

Beispiel 2:

ctx.CateringOrders.OrderBy("{0} {1}, {2} {3}", 
    "Details.DeliveryDate", "asc",
    "Details.DeliveryTime", "asc" 
)

Wo IQueryable<a>Entitätsabfrage ist, "col1 asc"ist Spalte 1 und Sortierrichtung "col2 asc"ist Spalte 2 und Sortierrichtung


-6

Bitte beachten Sie, dass dies nicht mit Teleriks Grid oder einer anderen Telerik DataSource-Komponente funktioniert. Obwohl vorgefilterte IQueryable-Objekte verwendet werden, erfolgt die Sortierung immer automatisch als letzter Schritt, wobei Ihre Sortiereinstellungen effektiv überschrieben werden.

Sie müssen Folgendes befolgen: Festlegen der Standardsortierung im Raster

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.