2009-09-03 5 views
2

J'ai un List qui contient des éléments, par exemple:tri DataGridView en utilisant la propriété DataSource

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\\ 

Le List est lié à un DataGridView comme suit:

MyDataGridView.DataSource = MyList; 

Je veux l'élément https:\\localhost\ à être sur le dessus. Comment puis-je atteindre cet objectif?

Répondre

2

Vous devez trier la liste avant de la lier.

List<string> items = new List<string>(); 

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

Ceci est un exemple très basique. Il existe également une méthode OrderBy pour trier par ordre croissant. Si vous aviez une liste d'objets, vous changer le type de retour de la (i => i) d'avoir la propriété pour date d'exemple ressemblerait .OrderByDescending<string, DateTime>(i => i.SomeDate)

0

Si vous voulez juste garder https://localhost/ en haut, puis:


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; 
... 
0

Si au contraire vous vouliez flotter spécifiquement localhost vers le haut, mais trier le reste croissant, vous pourriez plutôt faire quelque chose comme ceci:

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

Notez que les types génériques sur les méthodes peuvent généralement être déduit par le compilateur.

Questions connexes