2017-11-23 1 views
0

So habe ich eine einfache Datenmenge, die Tabelle hat BatchSummary die wie folgt aussieht: enter image description hereSorting DataSet Zeilen in einem sehr spezifischen, nicht alphabetisch sortiert

Ich mag in ganz bestimmten Reihenfolge die Zeilen in dieser Tabelle sortieren. Die Tabelle hat immer 5 Zeilen und die Werte der Beschreibung sehen immer so (Beispiel):

  • Anna
  • Frank
  • Bill
  • Marco
  • David

Ich möchte das zu bestellende DataSet in dieser sehr spezifischen Reihenfolge:

  • Marco
  • Bill
  • David
  • Anna
  • Frank

Ich versuchte es mit der Eigenschaft Standard meiner Datentabelle wie diese

dataSet.BatchSummary.DefaultView.Item(0).DataView.Sort = "Marco, Bill, David, Anna, Frank" 

zu tun, aber ich ein System.IndexOutOfRangeException

Wie kann ich das sortieren?

+0

'DataView.Sort()' [erwartet einen Spaltennamen] (https://msdn.microsoft.com/en-us/library /system.data.dataview.sort(v=vs.110).aspx), keine Menge von Werten .. – stuartd

+3

Ich habe dies getan, indem ich meiner Datenbanktabelle ein Feld hinzugefügt habe, das ich DisplayOrder genannt habe. Ich habe es entsprechend nummeriert. Dann fügte ich der Select-Anweisung ... Order By DisplayOrder eine Order By-Klausel hinzu. – Mary

Antwort

2

DataView.Sort unterstützt dies nicht, es erwartet eine Spalte.

würde ich Linq-To-DataTable verwenden, die viel mächtiger ist:

var descriptionOrder = new List<string>{ "Marco", "Bill", "David", "Anna", "Frank" }; 

var orderedBatchSummary = dataSet.BatchSummary.AsEnumerable() 
    .OrderBy(batch => descriptionOrder.IndexOf(batch.Description)) 
    .ToArray(); 
+0

Was ist, wenn die Datentabelle datengebunden ist? Wird dieser Code auch das n funktionieren? –

+0

@ Zackraiyan: Was bedeutet Daten gebunden? Das 'DataSet' /' DataTable' ist eine In-Memory-Collection, die beispielsweise über DataAdapter gefüllt wird. Wenn Sie es bestellen möchten, müssen Sie pure sql verwenden (wenn die Quelle eine Datenbank war). Aber OP hat nichts über die Datenquelle gezeigt. Er wollte nur ein bestehendes DataSet bestellen. –

Verwandte Themen