當前位置:成語大全網 - 書法字典 - 如何對列表進行排序

如何對列表進行排序

首先,實體類實現IComparable接口,並且必須實現CompareTo方法。

類別信息:IComparable

{

public int Id { get設置;}

公共字符串名稱{ get設置;}

public int CompareTo(object obj) {

int結果;

嘗試

{

Info info = obj as Info

如果(這個。Id & gt信息。Id)

{

結果= 0;

}

其他

結果= 1;

返回結果;

}

catch(Exception ex){ throw new Exception(ex。消息);}

}

}

調用方式如下,只是使用sort方法對列表進行排序。

私有靜態void readaccounting compare(){

列表& ltInfo & gtinfoList =新列表& ltInfo & gt();

信息列表。添加(

new Info() { Id = 1,Name = " ABC " });

信息列表。Add(new Info() { Id = 3,Name = " rose " });

信息列表。Add(new Info() { Id = 2,Name = " woft " });

信息列表。sort();

foreach(信息列表中的變量項)

{

控制臺。WriteLine(項目。Id + ":" +項目。姓名);

}

}

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

使用linq對列表進行排序,定義實體類時不需要實現IComparable接口。調用方法如下:

私有靜態void ReadT(string str) {

列表& ltInfo & gtinfoList =新列表& ltInfo & gt();

信息列表。添加(

new Info() { Id = 1,Name = " woft " });

信息列表。Add(new Info() { Id=3,Name = " rose " });

信息列表。Add(new Info() { Id = 2,Name = " ABC " });

控制臺。WriteLine(" ReadT * * * * * * * * * * * * * * * * * * ");

IEnumerable & ltInfo & gtquery = null

query =來自信息列表中的項目orderby項目。Id選擇項目;

foreach(查詢中的變量項)

{

控制臺。WriteLine(項目。id+":"+項目。姓名);

}

}

但是以上兩種方法只能對壹個實體屬性進行排序,如果對不同的屬性進行排序,只能寫很多if來判斷,很麻煩。並看下面的方式實現根據傳入參數排序。

私有靜態空列表排序(字符串字段,字符串規則)

{

如果(!字符串。IsNullOrEmpty(規則)& amp& amp(!規則。ToLower()。Equals("desc")||!規則。ToLower()。Equals("asc ")))

{

嘗試

{

列表& ltInfo & gtinfoList = GetList();

信息列表。排序(

委托人(信息info1,信息info2)

{

鍵入t1 = info1。GetType();

類型t2 = info2。GetType();

property info pro 1 = t 1。GetProperty(字段);

屬性信息pro2 = t2。GetProperty(字段);

退貨規則。ToLower()。等於(“asc”)?

pro1。GetValue(info1,null)。ToString()。CompareTo(pro2。GetValue(info2,null)。ToString()):

pro2。GetValue(info2,null)。ToString()。CompareTo(pro1。GetValue(info1,null)。ToString());

});

控制臺。WriteLine(" * * * * * * list sort * * * * * * * *);

foreach(信息列表中的變量項)

{

控制臺。WriteLine(項目。Id +","+項。姓名);

}

}

catch(例外ex)

{

控制臺。WriteLine(例如。消息);

}

}控制臺。WriteLine("ruls是錯的");

}

通話模式:

ListSort("名字"," desc ");//表示desc對名稱進行排序。

ListSort("Id "," ASC ");//表示按asc對Id進行排序。如果參數很多,這就減少了很多判斷。