2017-11-01 2 views
2

Ich habe eine Tabelle, die ich nach Namen in einer bestimmten Reihenfolge und nach Datum Namen ziehen möchte.Sortieren IQueryable nach bestimmten Reihenfolge

id name date 
1 XYZ 1:30 
2 ABC 1:40 
3 LMNOQ 1:50 
4 ABC 1:20 

ich den Auftrag

erstellt
List<string> itemNames = new List<string>(); 
     documentOrder.Add("XYZ"); 
     documentOrder.Add("ABC");  
     documentOrder.Add("LMNOQ"); 

dann die Daten gezogen, glaube ich, um intakt bleiben.

var myTable = _context.TheTable.Where(x => itemNames.Contains(x.id)); 

myTable Daten wird wie folgt aussehen

id name date 
1 XYZ 1:30 
2 ABC 1:40 
4 ABC 1:20 
3 LMNOQ 1:50 

Jetzt muss ich nach Daten sortiert werden, ohne den Namen, um vermasselt. Ich muss es so aussehen.

id name date 
1 XYZ 1:30 
2 ABC 1:20 
4 ABC 1:40 
3 LMNOQ 1:50 
+0

Mögliches Duplikat von [C# List <> Sortieren nach x dann y] (https://stackoverflow.com/questions/289010/c-sharp-list-sort-by-x-then- y) –

+0

Ist das, was Sie versuchen zu erreichen [eine stabile Sortierung auf Datum Spalte] (https://stackoverflow.com/a/13710006/7034621)? – orhtej2

Antwort

2

Wenn ein IQueryable verwenden, können Sie es bestellen, wie Sie (nach Namen, dann nach dem Datum ... das ist ein bisschen wie eine Zeit aussieht) wollen mit mehreren Bestell Aussagen.

var orderedQueryable = queryable.OrderBy(q => q.Name).ThenBy(q => q.Date); 
+0

Wenn ich OrderBy Name, wird der Name nicht alphabetisch sortiert? – user1854438

+0

@ user1854438 ja wird es. Ihre Frage zeigt sie alphabetisch ... wollten Sie etwas anderes? – Fenton

+0

Ja, tut mir leid, mein Beispiel war ein Fehler. Ich aktualisiere die Frage – user1854438

3
var myTable = _context.TheTable.Where(x => itemNames.Contains(x.id)) 
         .OrderBy(x => x.name).ThenBy(x => x.date); 
Verwandte Themen