2016-11-24 4 views
1

У меня есть эти строки кода, который считывает файл и должен поставить последние цифры на строке в порядке номеров:Как упорядочить содержимое файла в цифровом порядке?

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

Но его получили знаков после запятой в ответ. Он работает (вроде), но его ставит 11 до 3.75. Что я сделал не так?

+6

Это сортировка так потому, что они являются строками - если вы хотите, чтобы отсортировать в числовом порядке , они должны быть проанализированы как числа. – stuartd

+0

Вам нужно преобразовать элементы в десятичные. –

+0

Даже если строка содержит текст? –

ответ

3

Добавляя Convert.ToDouble в свой OrderBy вы можете достичь своей цели:

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); похоже, не работает –

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