我正在創建一個讀取/寫入文本文件的分數系統。我目前的格式讀取文件的每一行,並將每行存儲到List<string>
。一條典型的線路就像50:James (50 being the score, James being the username)
。C#排序包含數字的字符串列表
我需要按分數排序列表,同時保持字符串的名稱。下面是我的意思的例子:
無序文本文件:
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;
是的,我知道這是非常低效和醜陋的,但我花了很多時間嘗試了很多不同的方法。
+1,打我吧:) – Bort 2013-02-24 20:04:24
考慮增加所發生的事情的解釋。我非常懷疑OP瞭解這些代碼。 – evanmcdonnal 2013-02-24 20:06:21
它完美無缺地工作,非常感謝!誠然,我不明白,但我會做一些研究! – 2013-02-24 20:11:40