📌  相关文章
📜  如何就地对对象列表进行排序 - C# (1)

📅  最后修改于: 2023-12-03 15:38:46.544000             🧑  作者: Mango

如何就地对对象列表进行排序 - C#

在C#中,我们可以使用List<T>类来创建对象列表,并可以对其进行排序。就地排序是指在原列表中直接对其进行更改,而不是通过创建新列表来返回排序后的结果。以下是使用C#实现就地排序的步骤:

1. 创建一个对象列表

首先,我们需要创建一个对象列表。以下是一个示例类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 });
}
2. 实现列表排序

我们可以使用List<T>Sort方法对列表进行排序。在排序之前,我们需要提供一个Comparison<T>代表比较方法。以下是一个按年龄升序排序的比较方法:

people.Sort((person1, person2) => person1.Age.CompareTo(person2.Age));

如果我们想按照其他属性排序,只需相应更改比较方法即可。

3. 验证排序结果

我们可以通过遍历原列表来验证其是否已经按要求排序:

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#中就地对对象列表进行排序的介绍。