C# List Sort 数值升序、降序、按数字的第一位排序
作者:admin 时间:2021-5-18 14:38:34 浏览:对C# List集合进行排序,需要用到Sort()
方法,默认情况下,Sort()
是按升序排序,而有时我们要按降序排列时,写法便有所不同了,甚至有时候要求按数字的第一位排序,写法又会不一样。
C# List Sort 数值排序
List按升序排序
C#有个函数Sort()
,默认是按升序排序,可直接应用于对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);
}
}
}
输出结果
:::按升序排序:::
3
10
20
40
List按降序排序
要让Sort()
按降序排序,要用到CompareTo()
比较函数。
C#中的List的Sort
函数中的比较函数CompareTo
有三种结果 1, -1 ,0分别代表大,小,相等。默认List
的排序是升序排序。
在比较函数CompareTo()
中,如果 x>y return 1;
则是按照升序排列。如果x>y return -1;
则是按照降序排列。这就是1和-1大小的含义。其实你非要这么写 x<y return 1;
则也表示降序排列。不过大家一般习惯x>y return 1;
升序,如果想要降序只需return -1;即可。
系统List默认的排序是升序,如果你想要降序,可以直接在比较函数前面加个负号,把返回结果由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);
}
}
}
输出结果
:::按降序排序:::
40
20
10
3
List按数字的第一位排序
有时候,需要按数字的第一位排序时,又该怎样写这个代码呢?
其实,我们只需把集合的元素第一位先转化为字符,再进行排序,即可。
示例
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(":::按数字的第一位排序:::");
foreach (var result in numbers)
{
Console.WriteLine(result);
}
}
}
输出结果
:::按数字的第一位排序:::
10
20
3
40
- 站长推荐