2 Stimmen

Sortieren in DataGridView mithilfe der DataSource-Eigenschaft

Ich habe eine Liste, die Elemente enthält, zum Beispiel:

1) https:\\10.12.23\\
2) https:\\12.23.12.25\\
3) https:\\localhost\
4) https:\\12.25.12.2\\
5) https:\\12.36.12.22\\
6) https:\\12.88.12.32\\

Die Liste ist wie folgt an ein DataGridView gebunden:

MyDataGridView.DataSource = MyList;

Ich möchte, dass das Element https:\\localhost\ oben steht. Wie kann ich das erreichen?

2voto

David Basarab Punkte 69965

Sie müssen die Liste sortieren, bevor Sie sie binden.

List items = new List();

List sortedItems = items
    .OrderByDescending(i => i)
    .ToList();

Das ist ein sehr einfaches Beispiel. Es gibt auch eine OrderBy-Methode zum Aufsteigen sortieren. Wenn Sie eine Objektliste hätten, würden Sie den Rückgabetyp des (i => i) ändern, um z.B. das Eigenschaftsdatum zu haben würde so aussehen .OrderByDescending(i => i.SomeDate)

0voto

Tadas Šukys Punkte 3974

Wenn Sie nur https://localhost/ oben behalten möchten, dann:

int i = items.FindIndex(delegate(string s) { return s.Contains("localhost"); });
if (i > -1) {
  string localhost = items[i];
  items.RemoveAt(i);
  items.Insert(0, localhost);
}
MyDataGridView.DataSource = items;
...

0voto

dahlbyk Punkte 71222

Wenn Sie stattdessen localhost explizit nach oben verschieben möchten, aber den Rest aufsteigend sortieren möchten, könnten Sie stattdessen etwas wie dies tun:

MyDataGridView.DataSource = MyList
    .OrderByDescending(i => i.Contains("://localhost/", StringComparison.OrdinalIgnoreCase))
    .ThenBy(i => i)
    .ToList();

Beachten Sie, dass die generischen Typen in den Methoden normalerweise vom Compiler inferiert werden können.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X