web-dev-qa-db-de.com

So sortieren Sie DataTable in c # nach zwei Spalten

Ich habe eine DataTable, die wie folgt aussieht;

|              ID                    | ItemIndex |   ItemValue
ce895bd9-9a92-44bd-8d79-986f991154a9     1            3
ae7d714e-a457-41a8-8bb4-b5a0471c3d2f     2            2
a774dff3-acc0-4f50-a211-a775e28dcae3     2            1
292bbd50-290b-4511-9e4e-2e74e3ebe273     3            2
ae7d714e-a457-41a8-8bb3-b5a0471c3d22     3            1

Ich möchte diese Tabelle zuerst nach ItemIndex sortieren und dann die sortierte Tabelle nach ItemValue sortieren.

Wie kann ich das erreichen?

Edit: Nach dem Sortieren möchte ich meine Tabelle wie unten;

|              ID                    | ItemIndex |   ItemValue
ce895bd9-9a92-44bd-8d79-986f991154a9     1            3
a774dff3-acc0-4f50-a211-a775e28dcae3     2            1
ae7d714e-a457-41a8-8bb4-b5a0471c3d2f     2            2
ae7d714e-a457-41a8-8bb3-b5a0471c3d22     3            1
292bbd50-290b-4511-9e4e-2e74e3ebe273     3            2
14
Mehmet Ince

Sie können LINQ für DataSet/DataTable verwenden. 

var newDataTable = yourtable.AsEnumerable()
                   .OrderBy(r=> r.Field<int>("ItemIndex"))
                   .ThenBy(r=> r.Field<int>("ItemValue"))  
                   .CopyToDataTable();
28
Habib

Erstellen Sie ein DataView und verwenden Sie die Sortiereigenschaft:

DataView dv = new DataView(dt);
dv.Sort = "ItemIndex, ItemValue";

z.B.

foreach (DataRowView row in dv) {
   Console.WriteLine(" {0} \t {1}", row["ItemIndex"], row["ItemValue"]);
}

Weitere Informationen finden Sie in MDSN für ein ausführlicheres Beispiel:

http://msdn.Microsoft.com/de-de/library/system.data.dataview.sort.aspx

22
George Johnston

Rufen Sie für das datierbare Objekt einfach das defaultview-Objekt ab und legen Sie die Sortierung fest.

dataTable.DefaultView.Sort = "ItemIndex, ItemValue";
18
Ty Petrice

Durch das Erstellen einer Datenansicht

var dataView = new DataView(dataTable);
dataView.Sort = "ItemIndex ASC, ItemValue ASC"

Hier ist dataTable eine Tabelle, die Sie sortieren möchten

10
Nishant

Alternativ können Sie das verwenden 

DataView oDataSet;
oDataSet.Tables[0].DefaultView.Sort = "Column1 ASC ";
2
_UserAuditTrailTable.DefaultView.Sort = sortExpression;
1
user5940155