c list排序的三種實現方式

2021-07-15 09:09:16 字數 2180 閱讀 5734

摘自:

用了一段時間的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 同時從...