"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
Lasse Edsvik
quelle

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.

Konamiman
quelle
50

Ein anderer Weg:

qqq.OrderBy(x => new { x.Col1, x.Col2} )
parfilko
quelle
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)
hojjat.mi
quelle
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

e03050
quelle
-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

lukyer
quelle