C# 在C中,将列表排序在lastname之后,而不是firstname之后
如何增强我的以下功能C# 在C中,将列表排序在lastname之后,而不是firstname之后,c#,sorting,compareto,C#,Sorting,Compareto,如何增强我的以下功能 personList.Sort (delegate (Person firstPerson, Person secondPerson) { return firstPerson.Lastname.CompareTo (secondPerson.Lastname); }); 要在姓氏之后排序,而不是在姓氏之后排序?非常简单: var result = firstPerson.Lastname.CompareTo(secondPerson.Lastname); ret
personList.Sort (delegate (Person firstPerson, Person secondPerson) {
return firstPerson.Lastname.CompareTo (secondPerson.Lastname);
});
要在姓氏之后排序,而不是在姓氏之后排序?非常简单:
var result = firstPerson.Lastname.CompareTo(secondPerson.Lastname);
return result != 0 ? result : firstPerson.Firstname.CompareTo(secondPerson.Firstname);
您可以检查Lastnames是否相等,并相应地进行比较:
personList.Sort (delegate (Person firstPerson, Person secondPerson)
{
if(firstPerson.Lastname == secondPersonLasname)
return firstPerson.Firstname.CompareTo(secondPerson.Firstname);
return firstPerson.Lastname.CompareTo (secondPerson.Lastname);
});
如果您想使用Linq,还有另一种方法:
personList = personList.OrderBy(p => p.LastName).ThenBy(p => p.Firstname).ToList();
如果您可以/希望重新分配personList,则仅使用LINQ有用:
你的措辞让我有点困惑。您想先按姓再按姓排序吗?或者反过来说?首先是姓氏,如果他们在名字后相等。你的意思是相等我想:对不起,你是对的:顺便说一句:Linq创建了列表的新实例,但不排序-它对现有列表进行排序。我是否必须激活/包括一些内容,因为他没有提议。OrderBy等等?@测试你的意思是使用System.Linq
personList = personList
.OrderBy(x => x.Lastname)
.ThenBy(x => x.Firstname)
.ToList();