c list排序的三種實現方式

2021-10-01 12:12:19 字數 2487 閱讀 3674

用了一段時間的gridview,對gridview實現的排序功能比較好奇,而且利用c#自帶的排序方法只能對某乙個字段進行排序,今天demo了一下,總結了三種對list排序的方法,並實現動態傳遞欄位名對list進行排序。

首先先介紹一下平時最常用的幾種排序方法。

第一種:實體類實現icomparable介面,而且必須實現compareto方法

實體類定義如下:

1

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 }

呼叫方式如下,只需要用sort方法就能實現對list進行排序。

1

private

static

void

readaccordingcompare() );

5 infolist.add(new info() );

6 infolist.add(new info() );

7infolist.sort();

8foreach (var item in

infolist)

912 }

第二種方法: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 ienumerablequery = null

;9 query = from items in infolist orderby items.id select

items;

10foreach (var item in

query)

1114 }

但是上面兩種方式都只能對乙個實體屬性排序,如果對不同的屬性排序的話只能寫很多的if進行判斷,這樣顯得很麻煩。

且看下面的方式實現根據傳入引數進行排序。

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

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 }

感謝xujif的提醒。

c list排序的三種實現方式

摘自 用了一段時間的gridview,對gridview實現的排序功能比較好奇,而且利用c 自帶的排序方法只能對某乙個字段進行排序,今天demo了一下,總結了三種對list排序的方法,並實現動態傳遞欄位名對list進行排序。首先先介紹一下平時最常用的幾種排序方法。第一種 實體類實現icomparab...

list排序的三種實現方式

用了一段時間的gridview,對gridview實現的排序功能比較好奇,而且利用c 自帶的排序方法只能對某乙個字段進行排序,今天demo了一下,總結了三種對list排序的方法,並實現動態傳遞欄位名對list進行排序。首先先介紹一下平時最常用的幾種排序方法。第一種 實體類實現icomparable ...

快速排序的三種實現方式

隨機選取乙個基數 一般是陣列的第乙個 小技巧 可以在陣列中隨機取乙個元素換到首位作為基準元素 進行排序,把小於基數的放到左邊,大於基數的放到右邊 分別對基數的左 右部分重新進行步驟2,直到陣列有序。由上面的步驟可以看出,最重要的是第二步,本文來講解三種方式實現元素分堆。第一種 雙指標 i j 同時從...