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();

在C#中:

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());