使用 LINQ 反转城市列表的 C# 程序

什么是 LINQ?

LINQ(Language Integrated Query)是微软开发的一种数据查询技术,可以在 C# 和 VB.NET 等编程语言中使用。LINQ 支持各种数据来源,包括数据库、XML文件、对象集合等。使用 LINQ 可以简化代码,提高代码的可读性和维护性。

反转城市列表

获取城市列表

在 C# 中,我们可以使用数组或 List<T> 来存储城市列表。以下是一个示例数组:

string[] cities = { "Beijing", "Shanghai", "Guangzhou", "Shenzhen", "Chengdu", "Hangzhou" };

可以看到,该数组中存储了 6 个城市名称。

LINQ 反转城市列表

LINQ 提供了一个 Reverse() 方法,可以将集合中的元素反转。以下是使用 LINQ 反转上述城市列表的示例代码:

string[] cities = { "Beijing", "Shanghai", "Guangzhou", "Shenzhen", "Chengdu", "Hangzhou" };

var reversedCities = cities.Reverse();

foreach (string city in reversedCities)

{

Console.WriteLine(city);

}

在上述代码中,我们先定义了一个字符串数组 cities,并将其中的 6 个城市存储在其中。接着,我们使用 Reverse() 方法反转 cities 中的元素,并将结果存储在 reversedCities 变量中。最后,通过 foreach 循环遍历 reversedCities 中的元素,并将每个元素输出到控制台。

使用 LINQ 反转对象集合

除了数组,我们还可以使用 List<T> 来存储对象集合。假设我们有一个学生类 Student,其中包含姓名和年龄两个属性。以下是 Student 类的定义:

class Student

{

public string Name { get; set; }

public int Age { get; set; }

}

现在,我们将多个 Student 对象存储在 List<Student> 中,以下是示例代码:

List<Student> students = new List<Student>()

{

new Student() { Name = "Tom", Age = 18 },

new Student() { Name = "Jerry", Age = 20 },

new Student() { Name = "Mary", Age = 19 }

};

可以看到,该 List<Student> 中存储了 3 个 Student 对象。

为了使用 LINQ 反转该List<Student>,我们需要针对 Student 类编写一个比较器,以便LINQ在进行比较操作时使用。

class StudentComparer : IComparer<Student>

{

public int Compare(Student x, Student y)

{

if (x.Age == y.Age)

{

return 0;

}

else if (x.Age < y.Age)

{

return -1;

}

else

{

return 1;

}

}

}

在上述代码中,我们定义了一个 StudentComparer 类,实现了 IComparer<Student> 接口。该接口包含一个 Compare() 方法,该方法接受两个 Student 对象作为参数,并返回它们之间的比较结果。在上述代码中,我们通过比较 Student 对象的年龄属性来进行比较。

接着,我们将该比较器传递给 LINQ 的 OrderBy() 方法,以便 LINQ 可以对 Student 对象进行排序并反转顺序。

List<Student> sortedStudents = students.OrderBy(s => s, new StudentComparer()).Reverse().ToList();

foreach (Student student in sortedStudents)

{

Console.WriteLine($"Name: {student.Name}, Age: {student.Age}");

}

在上述代码中,我们使用OrderBy()方法将List<Student>进行排序,Sort()方法接受一个比较器作为参数,该比较器实现了IComparer<Student>接口。我们将该比较器传递给OrderBy()方法的第二个参数中。接着,我们使用Reverse()方法反转排序后的结果。最后,我们使用ToList()方法将结果转换为List<Student>,并使用foreach循环遍历该List<Student>中的元素,并将每个元素的姓名和年龄输出到控制台。

总结

本文介绍了如何使用 LINQ 反转城市列表和对象集合。通过使用 LINQ 反转集合,我们可以轻松地对集合进行排序和反转操作,从而提高代码的可读性和维护性。

后端开发标签