如何根据c#

时间:2016-03-01 00:10:19

标签: c# linq

有没有办法按字数计数

对字符串列表进行排序
var list = new List<string>();
    list.Add("The quick brown"); // 5
    list.Add("brown fox jumps over");   // 4
    list.Add("quick brown fox jumps over the lazy");    //1
    list.Add("The quick brown fox jumps")   // 3
    list.Add("fox jumps over the lazy dog");        // 2

foreach(var item in list)
{
 console.Writeline(item);
}

有没有办法在不使用其他列表的情况下生成输出或使用循环来排序

quick brown fox jumps over the lazy
fox jumps over the lazy dog
The quick brown fox jumps
brown fox jumps over
The quick brown

4 个答案:

答案 0 :(得分:2)

假设字符串不能为空,则下面应该有效。

foreach(var item in list.OrderByDescending(q => q.Split(' ').Length))
{
    console.Writeline(item);
}

答案 1 :(得分:1)

如果您想按字数排序:

list.Sort((a, b) => b.Split(' ').Length - a.Split(' ').Length);

或者,如果您只想按字符串长度排序(也可能是您想要的)

list.Sort((a, b) => b.Length - a.Length);

答案 2 :(得分:1)

您可以使用Sort方法:

your_list.Sort((x,y)=>y.Split(' ').Length - x.Split(' ').Length);

your_list.ForEach(Console.WriteLine);

答案 3 :(得分:0)

如果您希望以稍微更可重复的方式封装逻辑,请执行IComparer<T> interface,如此。

public class WordCountComparer : IComparer<String>
{
    public Int32 Compare(String a, String b)
    {
        var split = new[] { ' ' };

        var aCount = String.IsNullOrWhiteSpace(a) ? 0 : a.Split(split).Length;
        var bCount = String.IsNullOrWhiteSpace(b) ? 0 : b.Split(split).Length;

        if (aCount == bCount) { return 0; }
        if (aCount < bCount) { return 1; } else { return -1; }
    }
}

您可以将班级的实例直接传递给List<T>.Sort method,然后就会对列表进行排序。

list.Sort(new WordCountComparer());