我有一个列表,我想用参数排序。这意味着它都是值,例如我有
A 2/2
B 3/3
C 3/4
我想要排序C B A
我试图通过以下方式实现:
methods.Sort((y, x) => x.GetChangingMethodsCount().CompareTo(y.GetChangingMethodsCount()));
methods.Sort((y, x) => x.GetChangingClassesCount().CompareTo(y.GetChangingClassesCount()));
首先使用第二个参数对列表进行排序,然后使用第一个参数再次对其进行排序。但排序并不正确。任何暗示如何实现这一目标?
答案 0 :(得分:4)
您需要做的是将两个排序键合并为一个功能。如果第一个比较返回0,则只尝试第二个:
methods.Sort((y, x) =>
{
int sort = x.GetChangingClassesCount().CompareTo(y.GetChangingClassesCount());
if (sort == 0)
sort = x.GetChangingMethodsCount().CompareTo(y.GetChangingMethodsCount());
return sort;
});
答案 1 :(得分:3)
可能最简单的方法是使用OrderBy
和ThenBy
扩展方法:
methods.OrderByDescending(x => x.GetChangingMethodCount()).
ThenByDescending(x => x.GetChangingClassesCount()).
ToList();
答案 2 :(得分:2)
至少(至少对我来说)根据你的例子,这是否是你想要的,但你可以尝试一下:
var sortedMethods = methods.OrderByDescending(m => m.GetChangingMethodsCount()).ThenByDescending(m => m.GetChangingClassesCount());