首先,讓我們說明問題。有一個文本文件(報告)
A 1 bla-bla-bla
A 2 something
A 3 45 66 996
B 4 ?
B 5 2223
B 6 data
C 7 anything
我們想通過分組由第一列創建彙總報告,總結:第二個和忽略其他列 (如果他們存在):
A = 6
B = 15
C = 7
如果這是你的話,那麼LINQ的解決方案可以
var result = String.Join(Environment.NewLine, File
.ReadLines(@"C:\MyReport.txt")
.Select(line => line
.Split(new Char[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries))
.GroupBy(items => items[0], items => int.Parse(items[1]))
.Select(chunk => String.Format("{0} = {1}", chunk.Key, chunk.Sum())));
...
Console.Write(result);
如果你想有一個Dictionary<String, int>
所有你需要修改的Linq:
var dict = File
.ReadLines(@"C:\MyReport.txt")
.Select(line => line
.Split(new Char[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries))
.GroupBy(items => items[0], items => int.Parse(items[1]))
.ToDictionary(chunk => chunk.Key, chunk => chunk.Sum());
...
// return 6
Console.Write(dict["A"]);
不知道你正在處理什麼樣的數據,很難推薦具體的事情。如果我是你,我會看'GroupBy'。 – germi
我是唯一一個在這裏什麼都不懂的人嗎? –
從我能解決的問題來看,這個操作會加載'A'和'B',他想要一個計數器,每個計數器......這是正確的嗎?你有什麼嘗試? – Sayse