📅  最后修改于: 2023-12-03 15:38:46.544000             🧑  作者: Mango
在C#中,我们可以使用List<T>
类来创建对象列表,并可以对其进行排序。就地排序是指在原列表中直接对其进行更改,而不是通过创建新列表来返回排序后的结果。以下是使用C#实现就地排序的步骤:
首先,我们需要创建一个对象列表。以下是一个示例类Person
:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
我们可以使用以下代码创建一个具有随机数据的List<Person>
:
Random rand = new Random();
List<Person> people = new List<Person>();
for (int i = 0; i < 10; i++)
{
string firstName = $"John{i}";
string lastName = $"Doe{i}";
int age = rand.Next(20, 50);
people.Add(new Person { FirstName = firstName, LastName = lastName, Age = age });
}
我们可以使用List<T>
的Sort
方法对列表进行排序。在排序之前,我们需要提供一个Comparison<T>
代表比较方法。以下是一个按年龄升序排序的比较方法:
people.Sort((person1, person2) => person1.Age.CompareTo(person2.Age));
如果我们想按照其他属性排序,只需相应更改比较方法即可。
我们可以通过遍历原列表来验证其是否已经按要求排序:
foreach (var person in people)
{
Console.WriteLine($"{person.FirstName} {person.LastName}, {person.Age}");
}
以下是实现就地排序的完整代码:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main(string[] args)
{
Random rand = new Random();
List<Person> people = new List<Person>();
for (int i = 0; i < 10; i++)
{
string firstName = $"John{i}";
string lastName = $"Doe{i}";
int age = rand.Next(20, 50);
people.Add(new Person { FirstName = firstName, LastName = lastName, Age = age });
}
people.Sort((person1, person2) => person1.Age.CompareTo(person2.Age));
foreach (var person in people)
{
Console.WriteLine($"{person.FirstName} {person.LastName}, {person.Age}");
}
Console.ReadLine();
}
}
以上就是如何在C#中就地对对象列表进行排序的介绍。