目录
前言:
值类型的排序:
方法一:直接调用sort函数
方法二:通过C# ling表达式与CompareTo接口配合使用
方法三:降序的实现
对于自定义类型的sort排序
方法一:通过实现IComparable接口重写CompareTo方法来排序
方法二:通过ling表达式实现
前言:
有时需要对List列表中内容进行排序,List 的Sort方法排序有三种结果 1,0,-1分别表示大于,等于,小于。List的sort的方法如何使用,如何实现降序和升序
值类型的排序:
方法一:直接调用sort函数
static void Main(string[] args)
{List<int> sortList = new List<int>() { 100, 101, 50, 4 };
sortList.Sort();foreach (var i in sortList)
{
Console.Write(i);
Console.Write(",");
}
sortList.Sort((a, b) => a.CompareTo(b));
Thread.Sleep(10000);
}
输出结果: 4,50,100,101,默认情况下,通过sort排序是升序
方法二:通过C# ling表达式与CompareTo接口配合使用
sortList.Sort((a, b) => a.CompareTo(b)); //升序排序,与sortList.Sort()结果一样
方法三:降序的实现
可以直接在对比较结果取负值
sortList.Sort((a, b) => -a.CompareTo(b)); //结果取负值,升序就变成了降序了
查看int32源码我们看到,int32 是实现了CompareTo接口的
public struct Int32 : IComparable, IFormattable, IConvertible, IComparable<int>, IEquatable<int>
{
internal int m_value;
[__DynamicallyInvokable]
public const int MaxValue = 2147483647;
[__DynamicallyInvokable]
public const int MinValue = -2147483648;public int CompareTo(object value)
{
if (value == null)
return 1;
if (!(value is int num))
throw new ArgumentException(Environment.GetResourceString("Arg_MustBeInt32"));
if (this < num)
return -1;
return this > num ? 1 : 0;
}[__DynamicallyInvokable]
public int CompareTo(int value)
{
if (this < value)
return -1;
return this > value ? 1 : 0;
}}
对于自定义类型的sort排序
方法一:通过实现IComparable接口重写CompareTo方法来排序
public class Dog : IComparable<Dog>
{
private float _price;public float price => _price;
public Dog(float price)
{
_price = price;
}public int CompareTo(Dog other)
{
if (_price > other.price)
return 1;
if (_price == other.price)
return 0;
return -1;
}public override string ToString()
{
return _price.ToString();
}
}
文章来源地址https://www.toymoban.com/news/detail-615468.html
static void Main(string[] args)
{
List<Dog> dogs = new List<Dog>();
dogs.Add(new Dog(12));
dogs.Add(new Dog(10));
dogs.Add(new Dog(14));dogs.Sort();
foreach (var i in dogs)
{
Console.Write(i);
Console.Write(",");
}
Thread.Sleep(10000);
}文章来源:https://www.toymoban.com/news/detail-615468.html
输出结果:为 10,12,14,
方法二:通过ling表达式实现
static void Main(string[] args)
{
List<Dog> dogs = new List<Dog>();
dogs.Add(new Dog(12));
dogs.Add(new Dog(10));
dogs.Add(new Dog(14));dogs.Sort((a, b) =>
{
if (a.price > b.price)
return 1;
if (a.price == b.price)
return 0;
return -1;
});foreach (var i in dogs)
{
Console.Write(i);
Console.Write(",");
}
Thread.Sleep(10000);
}
到了这里,关于C# list的sort排序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!