2013-07-10 7 views
5

Ich habe dynamische Tabelle erstelltdynamische Datentabelle Sortierung in auf- oder absteigenden

DataTable date = new DataTable(); 
date.Columns.Add("date1"); 

und macht den Spaltennamen „date1“ mit Datum als

date1(Column name) 
05-07-2013 
10-07-2013 
09-07-2013 
02-07-2013 

und macht füllt meine dynamische Tabelle

füllen

Nun möchte ich, dass diese dynamischen Tabellendaten in auf- oder absteigender Reihenfolge sortiert werden.

For eg: 

date1(Column name) 
02-07-2013 
05-07-2013 
09-07-2013 
10-07-2013 

Antwort

8

Dies kann nicht mit der Originaldatentabelle durchgeführt werden. Sie können jedoch einen neuen, sortierten erstellen:

DataView view = date.DefaultView; 
view.Sort = "date1 ASC"; 
DataTable sortedDate = view.ToTable(); 
+0

danke es hatte für mich gearbeitet. –

3

Sie können DataTable.Select(filterExpression, sortExpression) Methode verwenden.

Ruft ein Array aller DataRow-Objekte ab, die den Filterkriterien in der angegebenen Sortierreihenfolge entsprechen.

date.Select("", "YourColumn ASC"); 

oder

date.Select("", "YourColumn DESC"); 

Als Alternative können Sie DataView gerne verwenden;

DataView view = date.DefaultView; 
view.Sort = "YourColumn ASC"; 
DataTable dt = view.ToTable(); 
1

Ich dachte, ich würde hier meine zwei Cent geben. Anstatt einen Sortieralgorithmus zu verwenden, der Zeit und Rechenleistung erfordert, kehren Sie die Art und Weise, in der Sie dem Datenobjekt Daten hinzufügen, umgekehrt ein.

Dies wird nicht für jedermanns Szenario funktionieren - aber für mein eigenes hat es perfekt geklappt.

Ich hatte eine Datenbank, die Elemente in aufsteigender Reihenfolge auflistete, aber oder einfach zu verwenden Ich musste die Art und Weise ändern, in der Leute die Daten sehen konnten (DESC), so dass die neueste Eingabe oben angezeigt wird Ende der Liste.

Also habe ich gerade meine for-Schleife geändert, anstatt von 0 -> aufwärts zu arbeiten, begann sie mit der Länge der Datentabelle (-1 um einen Überlauf zu stoppen) und stoppt dann wenn> = 0;

private Dictionary<string, string> GetComboData(string table, int column, bool id, int idField = 0) 
     { 
      SqlClass sql = new SqlClass(database); 
      Dictionary<string, string> comboBoxData = new Dictionary<string, string>(); 

      if (sql.connectedToServer) 
      { 
       sql.SelectResults(SQLCommands.Commands.SelectAll(table)); 

       for (int i = sql.table.Rows.Count-1; i >= 0; i--) 
       { 
        string tool = sql.table.Rows[i].ItemArray.Select(x => x.ToString()).ToArray()[column]; 
        string ID = sql.table.Rows[i].ItemArray.Select(x => x.ToString()).ToArray()[idField]; 

        comboBoxData.Add(ID, tool); 
       } 

      } 

      return comboBoxData; 
     } 
Verwandte Themen