gpt4 book ai didi

c# - 如何对有时条目相等的 List 进行排序?

转载 作者:行者123 更新时间:2023-11-30 19:06:19 24 4
gpt4 key购买 nike

我对 C# 中的排序有疑问。

让我们假设有 List<Person> personList有 50 个项目。
每个Personstring forename, surname .

现在我想对这个人员列表进行排序。
首先,列表应按 Forename 排序。 .
因此我会使用这个:
personList.Sort((p1, p2)=>string.Compare(p1.Forename, p2.Forname, true));

之后我想用相同的 Forname 对所有条目进行排序通过他们 Surname .

我该怎么做?

编辑:@Russ Cam:这是一个示例列表。

未分类:

David Johnson
William Black
David Smith
Matthew Edwards
Jayden Anderson
Andrew Connor
Adam Johnson
Daniel Armstrong
Steve Anderson
Daniel Black

排序:

Adam Johnson
Andrew Connor
Daniel Armstrong
Daniel Black
David Johnson
David Smith
Jayden Anderson
Matthew Edwards
Steve Anderson
William Black

最佳答案

您可以使用 LINQ 的 OrderBy实现方法

var sortedPersonList = personList.OrderBy(p => p.Forename).ThenBy(p => p.Surname);

编辑:

这是一个完整的控制台应用程序,用于验证这是否按您期望的顺序返回结果

static void Main()
{
var personList = new List<Person>{
new Person("David Johnson"),
new Person("William Black"),
new Person("David Smith"),
new Person("Matthew Edwards"),
new Person("Jayden Anderson"),
new Person("Andrew Connor"),
new Person("Adam Johnson"),
new Person("Daniel Armstrong"),
new Person("Steve Anderson"),
new Person("Daniel Black")
};

var sortedPersonList = personList.OrderBy(p => p.Forename).ThenBy(p => p.Surname);

foreach (var person in sortedPersonList)
{
Console.WriteLine(person);
}

Console.Read();
}

public class Person
{
public Person(string name)
{
var names = name.Split(' ');
Forename = names[0];
Surname = names[1];
}

public string Forename { get; set; }
public string Surname { get; set; }

public override string ToString()
{
return Forename + " " + Surname;
}
}

写出来

Adam Johnson
Andrew Connor
Daniel Armstrong
Daniel Black
David Johnson
David Smith
Jayden Anderson
Matthew Edwards
Steve Anderson
William Black

关于c# - 如何对有时条目相等的 List<Person> 进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12438023/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com