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