2009-09-03 64 views
2

我有一個List包含的項目,例如在DataGridView的排序:使用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\\ 

List綁定到DataGridView如下:

MyDataGridView.DataSource = MyList; 

我想要的項目https:\\localhost\到在頂部。我怎樣才能做到這一點?

回答

2

您需要在綁定它之前對列表進行排序。

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

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

這是一個非常基本的例子。還有一個OrderBy方法來升序排序。如果你有一個對象列表,你可以改變(i => i)的返回類型以使屬性例如日期看起來像.OrderByDescending<string, DateTime>(i => i.SomeDate)

0

如果你只想保留https://localhost/在頂部,那麼:


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

相反,如果你想具體浮動本地主機頂端,但排序其餘的上升,你可以改爲做這樣的事情:

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

注意,泛型類型的方法通常可以由編譯器推斷。