摘自:
用了一段時間的gridview,對gridview實現的排序功能比較好奇,而且利用c#自帶的排序方法只能對某乙個字段進行排序,今天demo了一下,總結了三種對list排序的方法,並實現動態傳遞欄位名對list進行排序。
首先先介紹一下平時最常用的幾種排序方法。
第一種:實體類實現icomparable介面,而且必須實現compareto方法
實體類定義如下:
複製**
1 class info:icomparable
2 4 public string name
5 6 public int compareto(object obj)
15 else
16 result = 1;
17 return result;
18 }
19 catch (exception ex)
20 }
21 }
複製**
呼叫方式如下,只需要用sort方法就能實現對list進行排序。
複製**
1 private static void readaccordingcompare() );
5 infolist.add(new info() );
6 infolist.add(new info() );
7 infolist.sort();
8 foreach (var item in infolist)
9 12 }
複製**
第二種方法:linq to list進行排序
運用linq實現對list排序,在實體類定義的時候就不需用實現icomparable介面,呼叫方式如下:
複製**
1 private static void readt(string str) );
5 infolist.add(new info() );
6 infolist.add(new info() );
7 console.writeline(「readt*********************」);
8 ienumerable query = null;
9 query = from items in infolist orderby items.id select items;
10 foreach (var item in query)
11
14 }
複製**
但是上面兩種方式都只能對乙個實體屬性排序,如果對不同的屬性排序的話只能寫很多的if進行判斷,這樣顯得很麻煩。
且看下面的方式實現根據傳入引數進行排序。
複製**
1 private static void listsort(string field,string rule)
2 );
19 console.writeline(「listsort*****」);
20 foreach (var item in infolist)
21
24 }
25 catch (exception ex)
26
29 } console.writeline(「ruls is wrong」);
30 31 }
複製**
呼叫方式:
listsort(「name」,」desc」);//表示對name進行desc排序
listsort(「id」,」asc」);//表示對id進行asc排序。如此如果引數很多的話減少了很多判斷。
如果有更好的方法歡迎提出,共同學習………..
複製**
1 private static void listsort(string field,string rule)
2 );
17 console.writeline(「listsort*****」);
18 foreach (var item in infolist)
19
22 }
23 catch (exception ex)
24
27 }
28 else
29 console.writeline(「ruls is wrong」);
30 }
c list排序的三種實現方式
用了一段時間的gridview,對gridview實現的排序功能比較好奇,而且利用c 自帶的排序方法只能對某乙個字段進行排序,今天demo了一下,總結了三種對list排序的方法,並實現動態傳遞欄位名對list進行排序。首先先介紹一下平時最常用的幾種排序方法。第一種 實體類實現icomparable介...
list排序的三種實現方式
用了一段時間的gridview,對gridview實現的排序功能比較好奇,而且利用c 自帶的排序方法只能對某乙個字段進行排序,今天demo了一下,總結了三種對list排序的方法,並實現動態傳遞欄位名對list進行排序。首先先介紹一下平時最常用的幾種排序方法。第一種 實體類實現icomparable ...
快速排序的三種實現方式
隨機選取乙個基數 一般是陣列的第乙個 小技巧 可以在陣列中隨機取乙個元素換到首位作為基準元素 進行排序,把小於基數的放到左邊,大於基數的放到右邊 分別對基數的左 右部分重新進行步驟2,直到陣列有序。由上面的步驟可以看出,最重要的是第二步,本文來講解三種方式實現元素分堆。第一種 雙指標 i j 同時從...