Я создаю систему оценки, которая читает/записывает в текстовый файл. Мой текущий формат читает каждую строку файла и сохраняет каждую строку в List<string>
. Типичная строка будет примерно 50:James (50 being the score, James being the username)
.C# Сортировка списка строк, содержащих числа
Мне нужно заказать список по счету, сохранив имя со строкой. Вот пример того, что я имею в виду:
Unordered текстовый файл:
50:James
23:Jessica
70:Ricky
70:Dodger
50:Eric
(Обратите внимание, есть некоторые оценки, которые являются такими же, что затрудняет мое использование создания списка с помощью цифровых клавиш)
Упорядоченный список:
70:Dodger
70:Ricky
50:Eric
50:James
23:Jessica
Мой текущий код (который не работает с двумя или более одинаковых баллов)
Dictionary<int, string> scoreLines = new Dictionary<int, string>();
if (!File.Exists(scorePath))
{
File.WriteAllText(scorePath, "No Scores", System.Text.Encoding.ASCII);
}
StreamReader streamReader = new StreamReader(resourcePath + "\\scoreboard.txt");
int failedLines = 0;
while (failedLines < 3)
{
string line = streamReader.ReadLine();
if (String.IsNullOrEmpty(line))
{
failedLines++;
continue;
}
scoreLines.Add(int.Parse(line.Split(':')[0]), line.Split(':')[1]);
}
var arr = scoreLines.Keys.ToArray();
arr = (from a in arr orderby a descending select a).ToArray();
List<string> sortedScoreLines = new List<string>();
foreach (int keyNum in arr)
{
sortedScoreLines.Add(keyNum + ":" + scoreLines[keyNum]);
}
return sortedScoreLines;
Да, я знаю, что это TERRIBLY неэффективно и уродливо, но я потратил века, пытаясь использовать множество разных методов.
+1, опередил меня :) – Bort
Попробуйте добавить объяснение того, что происходит. Я очень сомневаюсь, что ОП понимает этот код. – evanmcdonnal
Он работал безупречно, спасибо большое! По общему признанию, я этого не понимаю, но я сделаю немного исследований! –