2016-11-24 43 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);似乎没有工作 –