2016-03-17 7 views
-3

Мне нужно отсортировать массив строк. Как я могу это сделать, если:Как отсортировать строки в C#

  1. Они должны быть размещены в порядке длины строки.
  2. Если длины равны, их необходимо поместить в алфавитном порядке.

Есть ли какие-либо простые меры?

+1

Какой код у вас до сих пор? – Amy

+3

Ну, вы можете называть 'Array.Sort' и передавать' IComparer ' или 'Сравнение ' ... или вы можете использовать LINQ ... вы еще что-нибудь пробовали? Что случилось? –

+0

взгляните на это http://www.dotnetperls.com/sort – user990423

ответ

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 
1

Вы можете сделать это с помощью LINQ следующим образом:

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

Другой способ заключается в использовании Array.Sort с реализацией пользовательских IComparer.

Смежные вопросы