2013-04-13 49 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

您可以使用自定義邏輯編寫自己的sortmethod。 – 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

相關問題