如何在C#中对字符串进行排序

时间:2016-03-17 17:18:14

标签: c# string

我必须对字符串数组进行排序。如果出现这种情况我该怎么做?

  1. 它们必须按字符串长度排列。
  2. 如果长度相等,则必须按字母顺序排列。
  3. 有什么简单的事吗?

2 个答案:

答案 0 :(得分:1)

您可以通过以下方式使用LINQ执行此操作:

string[] arr = new[] { "aa", "b", "a" , "c",  "ac" };
var res = arr.OrderBy(x => x.Length).ThenBy(x => x).ToArray();

另一种方法是将Array.Sort与自定义IComparer实施一起使用。

答案 1 :(得分:1)

这是C#中的传统方式......

static void Main(string[] args)
{
    List<string> list = new List<string>();
    list.Add("1991728819928891");
    list.Add("0991728819928891");
    list.Add("3991728819928891");
    list.Add("2991728819928891");
    list.Add("Hello");
    list.Add("World");
    list.Add("StackOverflow");
    list.Sort(
        delegate (string a, string b) {
            int result = a.Length.CompareTo(b.Length);
            if (result == 0 )
                result = a.CompareTo(b);
            return result;
        }
    );

    Console.WriteLine(string.Join("\n", list.ToArray()));
}

示例输出:

Hello
World
StackOverflow
0991728819928891
1991728819928891
2991728819928891
3991728819928891