list排序的三種實現方式

2021-06-07 05:38:57 字數 1636 閱讀 7013

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

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

第一種:實體類實現icomparable

介面,而且必須實現

compareto方法

實體類定義如下:

class info:icomparable

public string name

public int compareto(object obj)

else

result = 1;

return result;

}catch (exception ex)

}}

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

private static void readaccordingcompare() );

infolist.add(new info() );

infolist.add(new info() );

infolist.sort();

foreach (var item in infolist)

}

第二種方法:linq to list進行排序

運用linq實現對list排序,在實體類定義的時候就不需用實現icomparable

介面,呼叫方式如下:

private static void readt(string str) );

infolist.add(new info() );

infolist.add(new info() );

console.writeline("readt*********************");

ienumerablequery = null;

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

foreach (var item in query)

}

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

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

private static void listsort(string field,string rule)

);console.writeline("*****listsort**********");

foreach (var item in infolist)

}catch (exception ex)

} console.writeline("ruls is wrong");

}

呼叫方式:

listsort("name","desc");//表示對name進行desc排序

listsort("id","asc");//表示對id進行asc排序。如此如果引數很多的話減少了很多判斷。

List遍歷 三種方式

對list的遍歷有三種方式 listlist new arraylist list.add new a list.add new a 第一種 for iteratorit list.iterator it.hasnext 這種方式在迴圈 執行過程中會進行資料鎖定,效能稍差,同時,如果你想在尋歡過程中...

遍歷List的三種方式

對list的遍歷有三種方式 listlist new arraylist list.add new a list.add new a 第一種 for iteratorit list.iterator it.hasnext 這種方式在迴圈 執行 過程中會進行資料鎖定,效能稍差,同時,如果你想在尋歡過程...

c list排序的三種實現方式

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