2016-11-24 73 views
1

我有幾行代碼讀取一個文件,應該把最後的數字就行的編號順序:如何按數字順序排列文件的內容?

string[] lines = File.ReadAllLines(@"g:\\myfile.DAT"); 
var result = lines.AsParallel() 
    .OrderBy(s => s.Split('>').Last()) 
    .ToList(); 
result.ForEach(Console.WriteLine); 

但在回答其有小數位。它的工作原理(有點),但是在3.75之前放置11。我做錯了什麼?

+6

,因爲它們都是字符串它的排序這種方式 - 如果你想讓他們在數字順序排序,他們將不得不被解析爲數字。 – stuartd

+0

您必須將元素轉換爲十進制。 –

+0

即使該行包含文本? –

回答

3

通過添加Convert.ToDouble到您的排序依據,你可以實現你的目標:

string[] lines = File.ReadAllLines(@"g:\\myfile.DAT"); 
var result = lines.AsParallel() 
        .OrderBy(s => Convert.ToDouble(s.Split('>').Last())) 
        .ToList(); 
result.ForEach(Console.WriteLine); 

更多信息上Convert.ToDouble

+0

除非在兩者之間有文字。所以你可能不得不把它分解成小塊並捕獲潛在的解析錯誤。儘管如此,這些信息並不在原始問題中。 – Ernesto

+0

我以爲它只是在包含數字的「>」後面排列的行,這就是爲什麼我最初沒有說出來,對不起。 –

+0

如何將這些結果寫入文本文件而不是控制檯,如File.WriteAllText(@「g:\\ myfile.DAT」,Result);似乎沒有工作 –