實現List的多列排序

2021-09-06 03:25:22 字數 3310 閱讀 1572

list的sort()方法,只能實現簡單資料的排序,如過list裡面裝的是物件,就必須要顯示實現icomparer介面,才能排序,並且有時我們需要對乙個物件進行多列排序,如學生按學號,成績公升序排列。在實現這個介面的時候,我們可以對多個字段排序,**如下:

public

class

people

public

int age

public

string name

}public

class peoplecomparer : icomparer

#region icomparerpublic

intcompare(people x, people y)

int *** = -1

; *** = comparer.default.compare(x.***, y.***);

if (*** == 0

)

if (*** == 0

)

return

***;

}#endregion

}

private

void button1_click(object

sender, eventargs e)

);lstpeople.add(

new people );

lstpeople.add(

new people );

lstpeople.add(

new people );

lstpeople.add(

new people );

lstpeople.add(

new people );

lstpeople.add(

new people );

lstpeople.add(

new people );

lstpeople.add(

new people );

lstpeople.add(

new people );

system.diagnostics.debug.writeline(

"原始資料:");

disppeople(lstpeople);

system.diagnostics.debug.writeline(

"公升序排列:");

peoplecomparer asccompare = new peoplecomparer(true

); lstpeople.sort(asccompare);

disppeople(lstpeople);

system.diagnostics.debug.writeline(

"降序排列:");

peoplecomparer desccompare = new peoplecomparer(false

); lstpeople.sort(desccompare);

disppeople(lstpeople);

}private

void disppeople(ienumerablepeoples)

system.diagnostics.debug.writeline(str);

}}

**實現了按人的性別,年齡,名字排序,可以實現公升序和降序。

結果:

原始資料:

***:man age:

40name:name1

***:woman age:

15name:name11

***:man age:

35name:name4

***:man age:

55name:name3

***:man age:

35name:name5

***:man age:

60name:name2

***:woman age:

27name:name15

***:woman age:

37name:name14

***:woman age:

27name:name12

***:woman age:

47name:name13

公升序排列:

***:man age:

35name:name4

***:man age:

35name:name5

***:man age:

40name:name1

***:man age:

55name:name3

***:man age:

60name:name2

***:woman age:

15name:name11

***:woman age:

27name:name12

***:woman age:

27name:name15

***:woman age:

37name:name14

***:woman age:

47name:name13

降序排列:

***:woman age:

47name:name13

***:woman age:

37name:name14

***:woman age:

27name:name15

***:woman age:

27name:name12

***:woman age:

15name:name11

***:man age:

60name:name2

***:man age:

55name:name3

***:man age:

40name:name1

***:man age:

35name:name5

***:man age:

35 name:name4

python多列排序 python多列排序

python的sort 和sorted 函式可以進行多列排序。在乙個文字或者列表有多列時,這是乙個很好用的技巧。首先,看一下待排序的資料 這是乙個csv檔案,它有6列,我們需要首先對第一列排序,再對第六列排序 46896961,192100485,1,95wf5sm,1863,2014 12 18 ...

SQL ORDER BY 多列排序

最近學習my sql的時候對order by的多列排序邏輯不是很清楚,查閱了一些資料加上自己動手做了幾個小實驗清楚了不少,本結論僅適用於實驗條件下成立 列值為 int 先上結論 如 order by 列名1,列名2,列名3 若列名後不加限制條件,將直接按照離order by語句最近的無限制條件的列名...

MySQL 多列排序

mysql 基礎篇 三正規化mysql 軍規 mysql 配置 mysql 使用者管理和許可權設定 mysql 常用函式介紹 mysql 字段型別介紹 mysql 多列排序 mysql 行轉列 列轉行 mysql null 使用帶來的坑 mysql and 和 or 聯合使用帶來的坑 mysql 觸...