在C#中,你可以使用List<T>
类来创建一个集合,然后使用OrderBy()
或OrderByDescending()
方法来实现自定义排序。这两个方法都接受一个Func<T, TResult>
类型的参数,这个参数是一个Lambda表达式,用于定义排序的依据。
下面是一个简单的示例,展示了如何使用OrderBy()
方法对一个整数列表进行升序排序:
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
List<int> numbers = new List<int> { 5, 3, 8, 1, 6 };
// 使用 OrderBy() 方法进行升序排序
List<int> sortedNumbers = numbers.OrderBy(x => x).ToList();
Console.WriteLine("Sorted numbers:");
foreach (int number in sortedNumbers)
{
Console.Write(number + " ");
}
}
}
如果你想实现降序排序,可以使用OrderByDescending()
方法:
// 使用 OrderByDescending() 方法进行降序排序
List<int> sortedNumbersDescending = numbers.OrderByDescending(x => x).ToList();
Console.WriteLine("\nSorted numbers in descending order:");
foreach (int number in sortedNumbersDescending)
{
Console.Write(number + " ");
}
你还可以使用ThenBy()
方法对排序结果进行进一步的自定义排序。例如,如果你想先按奇数升序排序,然后按偶数降序排序,可以这样做:
List<int> sortedNumbersByOddFirst = numbers
.OrderBy(x => x % 2 == 0) // 先按奇数升序排序
.ThenBy(x => x) // 再按偶数降序排序
.ToList();
Console.WriteLine("\nSorted numbers by odd first:");
foreach (int number in sortedNumbersByOddFirst)
{
Console.Write(number + " ");
}
这个示例中,OrderBy(x => x % 2 == 0)
会根据数字是奇数还是偶数进行排序,然后ThenBy(x => x)
会对相同奇偶性的数字进行升序排序。