对于基本类型的普通排序

直接调用Sort()方法

List<int> listBase = new List<int>() { 128, 25, 81 };
Console.WriteLine("基础类型排序前(List<int>):");
foreach (var item in listBase)
{
    Console.Write($"{item} \t");    // result: 128 25 81
}
Console.WriteLine("\n基础类型排序后(List<int>):");
// 排序方法一:Sort()
listBase.Sort();    // 升序排序 result: 25 81 128
//listBase.Reverse();    //反转 result: 81 25 128
//排序方法二:使用lambda表达式,前面加个负号:
//listBase.Sort((x, y) => x.CompareTo(y));    //升序
//listBase.Sort((x, y) => -x.CompareTo(y));    //降序序
foreach (var item in listBase)
{
    Console.Write($"{item} \t");
}

对于复杂或自定义类型,则推荐使用实现自指定接口的方法来实现排序

实现IComparable接口
根据单个值排序
public class Part : IComparable<Part>
{
    public int PartId { get; set; }
    public string PartName { get; set; }
    public override string ToString()
    {
        return $"ID: {PartId}\t{PartName}";
    }
    public int CompareTo(Part comparePart)
    {
        if (comparePart == null)
        {
            return 1;
        }
        else
        {
            return PartId.CompareTo(comparePart.PartId);
        }
    }
}
多权重排序:现根据PartId排序,如果相等,再根据PartName排序
public int CompareTo(ETLSSource other)
        {
            if (other == null)
            {
                return 1;
            }
            int pResult = this.fIndex.CompareTo(other.fIndex);
            if (pResult != 0)
            {
                return pResult;
            }
            int pResult = this.fTitle.CompareTo(other.fTitle);
            if (pResult != 0)
            {
                return pResult;
            }
            int pResult = this.fType.CompareTo(other.fType);
            if (pResult != 0)
            {
                return pResult;
            }
            return this.fGID.CompareTo(other.fGID)
        }
然后调用排序:
parts.Sort();   //升序
也可以使用lambda表达式来完成排序
//单一字段排序
parts = parts.OrderBy(p => p.PartId).ToList();  //升序
//多字段排序
parts = parts.OrderBy(p => p.PartId).ThenBy(p => p.PartName).ToList();