📅  最后修改于: 2023-12-03 15:06:48.372000             🧑  作者: Mango
在 C# 中,我们可以使用 LINQ OrderBy() 方法对字符串名称列表进行排序。这个方法可以按升序或降序对字符串进行排序,我们也可以创建自己的比较器来对字符串进行排序。
下面是一个简单的示例程序,它演示了如何使用 LINQ OrderBy() 方法对一个字符串数组进行排序。
using System;
using System.Linq;
class Program {
static void Main() {
string[] names = { "Alice", "Bob", "Charlie", "David", "Ethan" };
// 升序排序
var sortedNames = names.OrderBy(n => n);
foreach (var name in sortedNames) {
Console.WriteLine(name);
}
// 降序排序
var reverseSortedNames = names.OrderByDescending(n => n);
foreach (var name in reverseSortedNames) {
Console.WriteLine(name);
}
}
}
在这个程序中,我们首先定义了一个字符串数组,其中包含了五个名字。然后,我们调用了 OrderBy() 方法来对这个数组进行升序排序,并将排序后的结果存储在 sortedNames 变量中。使用 foreach 循环遍历 sortedNames 变量,将其中的每个字符串打印到控制台上。
类似的,我们也可以使用 OrderByDescending() 方法来对数组进行降序排序。这个方法也以相似的方式工作。我们只需在排序前面添加一个“Descending”修饰符即可。
除了默认的排序方式,我们还可以创建自己的比较器来对字符串进行排序。假设我们想要根据字符串的长度来进行排序,较短的字符串排在前面。我们可以使用以下代码:
class LengthComparer : IComparer<string> {
public int Compare(string x, string y) {
return x.Length.CompareTo(y.Length);
}
}
class Program {
static void Main() {
string[] names = { "Alice", "Bob", "Charlie", "David", "Ethan" };
var sortedNames = names.OrderBy(n => n, new LengthComparer());
foreach (var name in sortedNames) {
Console.WriteLine(name);
}
}
}
在这里,我们创建了一个名为 LengthComparer 的比较器类,并实现了 IComparer
然后,在主程序中,我们调用 OrderBy() 方法时,还传入了一个 LengthComparer 实例,这样方法就会按照字符串长度进行排序。
在本文中,我们介绍了如何使用 LINQ OrderBy() 方法来对字符串名称列表进行排序。我们还演示了如何使用自定义的比较器来实现排序。这些示例代码可以帮助您更好地理解 LINQ 的工作原理,并在 C# 程序中应用实践。