如何根据List <string>字段数对List <List <string >>进行排序?

Sku*_*uta 2 c# sorting list

如何根据字段数对List <List <string >>进行排序?

列表得到了结构

a|b|c|d|eeee|rere|ewew|
ewqewq|ewew|
ewew|ewewewewew|
Run Code Online (Sandbox Code Playgroud)

按排序我想根据块数(asc/desc)来做

编辑

<list<list<string>> is "items"我访问由项每个列表[0]的每

这些项[xx]是一个列表,这意味着我希望它们对数组进行排序

    a|b|c|d|eeee|rere|ewew|
    a|b|c|d|eeee|rere
    a|b|c|d|eeee
Run Code Online (Sandbox Code Playgroud)

tva*_*son 9

如果您不需要"就地"排序,可以使用LINQ为您提供一个新的排序列表.

var sorted = oldList.OrderBy( l => l.Count );
Run Code Online (Sandbox Code Playgroud)

否则,您需要编写自己的Comparer,它接受两个列表并按其大小返回排序.

public class CountComparer : IComparer<List<string>>
{
    #region IComparer<List<string>> Members

    public int Compare( List<string> x, List<string> y )
    {
        return x.Count.CompareTo( y.Count );
    }

    #endregion
}



oldList.Sort( new CountComparer() );
Run Code Online (Sandbox Code Playgroud)

或者,正如@Josh指出的那样,你可以用lambda表达式做到这一点.

oldList.Sort( (a,b) => a.Count.CompareTo( b.Count ) )
Run Code Online (Sandbox Code Playgroud)

如果比较相对简单或使用一次,IMO后者可以很好地工作,但实际的类可能更好,因为比较变得更复杂或者你需要在多个地方重复它.