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