C# 如何按计数对列表进行排序?
在C#中:C# 如何按计数对列表进行排序?,c#,.net,list,sorting,C#,.net,List,Sorting,在C#中: List SectionList=newlist(); SectionList包含点列表,其中每个子列表包含的点的数量各不相同 我想弄清楚的是如何按照子列表的数量降序排列SectionList 因此,如果SectionList有3个点列表,在排序之后,SectionList[0]将包含所有3个列表中的最高计数值 谢谢, 神话这应该有效: var sortedList = SectionList.OrderByDescending(l=>l.Count()).ToList();
List SectionList=newlist();
SectionList包含点列表,其中每个子列表包含的点的数量各不相同
我想弄清楚的是如何按照子列表的数量降序排列SectionList
因此,如果SectionList有3个点列表,在排序之后,SectionList[0]将包含所有3个列表中的最高计数值
谢谢,
神话这应该有效:
var sortedList = SectionList.OrderByDescending(l=>l.Count()).ToList();
(a,b)=>a.Count-b.Count
是一个比较委托。Sort
方法使用要比较的列表对调用它,如果a
比b
短,则委托返回负数;如果a
比b
长,则委托返回正数;如果两个列表长度相同,则委托返回零。您可以创建自定义比较器
SectionList.Sort((a,b) => a.Count - b.Count);
希望这有帮助:)list.OrderBy(x=>x.Count.ToList();虽然这样做有效,但是如果有一个
ListCountComparer:IComparer
,可能会更有用,因为您不依赖于内部列表的类型,更一般的情况可能会有助于将来比较其他一些列表的计数。但是,您必须传入列表的t,即使您不需要它。我认为ListCountComparer:IComparer是最明智的。感谢您的建议,我已将其更新为使用IList,以便可以在所有列表上使用:)虽然我非常喜欢其他答案,但这一个可能是“最好的”,因为它最直观,也最容易记住。
SectionList.Sort((a,b) => a.Count - b.Count);
public class ListCountComparer : IComparer<IList> {
public int Compare(IList x, IList y) {
return x.Count.CompareTo(y.Count);
}
}
SectionList.Sort(new ListCountComparer());