如果多个条目具有相同的值,List.OrderBy()的结果是什么?

时间:2016-08-30 11:23:31

标签: c# .net list

我使用OrderBy() Lists方法获得了一种奇怪的行为。

想象一下,您有一个列表,每个人都有FirstnameLastnameGender。 如果此列表中的所有人都是Gender "m",我会在每次调用后获得不同的排序

list.OrderBy(p => p.Gender)

但是我不希望我的列表在每次刷新时跳转。对此有何想法?

3 个答案:

答案 0 :(得分:5)

如果性别相同,您可以使用ThenBy()使用其他属性对其进行排序。像这样:

list.OrderBy(p=>p.Gender).ThenBy(p=>p.FirstName);

答案 1 :(得分:1)

在您的代码中Gender m是字符串类型,使用m的结果很多,这不是可订购的实体。因此,当您尝试使用此属性进行订购时,它会使用m随机排序。尝试使用具有某些可订购实体的其他内容进行排序,例如FirstName

list.OrderBy(p=>p.Firstname);

list.OrderBy(p=>p.Lastname);

list.OrderBy(p=>p.Gender).ThenBy(p=>p.FirstName);

答案 2 :(得分:1)

按所有字段排序,例如:

list.OrderBy(x=>x.Gender).ThenBy(x=>x.FirstName).ThenBy(x=>x.LastName);