2013-04-13 2 views
-1

У меня есть список, как это:Сортировка списка разделенных пробелами количество строк

List<String> strings = new List<string>(); 
strings.Add("1 23 4"); 
strings.Add("1 4 23"); 

Когда я вроде этого я хочу, чтобы результат {(1 4 23), (1 23 4)}. Обычная сортировка строк дает {(1 23 4), (1 4 23)}.

+1

Какова логика стоит за ним? –

+0

Не могли бы вы объяснить логику в вашей голове, которая необходима для вашего _unusual_ рода? – gideon

+0

Вы можете написать свой собственный метод сортировки с помощью своей логики. – Tomtom

ответ

0
var result = strings.Select(s => new { 
            orgstr = s, 
            sortstr = String.Join("", s.Split(' ').Select(x => x.PadLeft(10, '0'))) 
           }) 
        .OrderBy(x => x.sortstr) 
        .Select(x => x.orgstr); 

Тестовый случай

List<String> strings = new List<string>(); 
strings.Add("1 23 4 5 6"); 
strings.Add("1 1 24 2 4"); 
strings.Add("1 4 23 2 4"); 
+0

Ужасно волшебство LINQ! Если вы не возражаете, можете ли вы объяснить, как это работает? – user2277990

+0

@ user2277990 Я думаю, если вы измените последнюю строку как 'Select (x => x.sortstr)', вы увидите, какую строку она формирует для сортировки. – I4V