|
|
|
|
|
對(duì)C# List集合進(jìn)行排序,需要用到Sort()
方法,默認(rèn)情況下,Sort()
是按升序排序,而有時(shí)我們要按降序排列時(shí),寫(xiě)法便有所不同了,甚至有時(shí)候要求按數(shù)字的第一位排序,寫(xiě)法又會(huì)不一樣。
C# List Sort 數(shù)值排序
List按升序排序
C#有個(gè)函數(shù)Sort()
,默認(rèn)是按升序排序,可直接應(yīng)用于對(duì)List
集合的排序。
示例
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> numbers = new List<int>() { 20, 10, 3, 40 };
numbers.Sort();
Console.WriteLine(":::按升序排序:::");
foreach (var result in numbers)
{
Console.WriteLine(result);
}
}
}
輸出結(jié)果
:::按升序排序:::
3
10
20
40
List按降序排序
要讓Sort()
按降序排序,要用到CompareTo()
比較函數(shù)。
C#中的List的Sort
函數(shù)中的比較函數(shù)CompareTo
有三種結(jié)果 1, -1 ,0分別代表大,小,相等。默認(rèn)List
的排序是升序排序。
在比較函數(shù)CompareTo()
中,如果 x>y return 1;
則是按照升序排列。如果x>y return -1;
則是按照降序排列。這就是1和-1大小的含義。其實(shí)你非要這么寫(xiě) x<y return 1;
則也表示降序排列。不過(guò)大家一般習(xí)慣x>y return 1;
升序,如果想要降序只需return -1;即可。
系統(tǒng)List默認(rèn)的排序是升序,如果你想要降序,可以直接在比較函數(shù)前面加個(gè)負(fù)號(hào),把返回結(jié)果由1變成-1即可。
示例
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> numbers = new List<int>() { 20, 10, 3, 40 };
numbers.Sort((x, y) => -x.CompareTo(y));
Console.WriteLine(":::按降序排序:::");
foreach (var result in numbers)
{
Console.WriteLine(result);
}
}
}
輸出結(jié)果
:::按降序排序:::
40
20
10
3
List按數(shù)字的第一位排序
有時(shí)候,需要按數(shù)字的第一位排序時(shí),又該怎樣寫(xiě)這個(gè)代碼呢?
其實(shí),我們只需把集合的元素第一位先轉(zhuǎn)化為字符,再進(jìn)行排序,即可。
示例
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> numbers = new List<int>() { 20, 10, 3, 40 };
numbers.Sort((a, b) => (a.ToString()[0].CompareTo(b.ToString()[0])));
Console.WriteLine(":::按數(shù)字的第一位排序:::");
foreach (var result in numbers)
{
Console.WriteLine(result);
}
}
}
輸出結(jié)果
:::按數(shù)字的第一位排序:::
10
20
3
40