我正在尝试将文件读入全局数组,遍历数组并将每个字符串标识为相应的数量,然后在它们自己的组中找到总和。并将这些组按各自的唯一编号进行划分。
我正在阅读的文本文件:
Name,50
Name,40
DifferentName,50
AnotherName,10
Name,60
在逗号处拆分行并使数字对应于它们的特定名称的最简单方法是什么,不知道它们将按哪个顺序排列?
这是我目前使用的代码。虽然现在它只是打开文件对话框,但我把它放在这里作为建设性的参考。
string strFileName;
private void btnReadInFile_Click(object sender, EventArgs e)
{
//select the file
OpenFileDialog ofdGetFile = new OpenFileDialog();
if (ofdGetFile.ShowDialog() == DialogResult.Cancel)
{
//cancel
MessageBox.Show("User Canceled");
return;
}
else
{
//open the file
StreamReader myStreamReader;
strFileName = ofdGetFile.FileName;
FileStream input = new FileStream(strFileName, FileMode.Open, FileAccess.Read);
myStreamReader = new StreamReader(input);
// other
MessageBox.Show("Reading Complete", "Done!", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
private void btnShowGrade_Click(object sender, EventArgs e)
{
if (strFileName != null)
{
String[][] nameSums = System.IO.File.ReadLines(strFileName)
.Select(l => l.Split(',')) // split the line
.GroupBy(arr => arr[0]) // group by name
.Select(grp => new String[]{
grp.Key,
grp.Sum(arr => int.Parse(arr[1])).ToString()})
.ToArray();
}
else
{
MessageBox.Show("You need to read in a file first.");
}
}
}
我觉得必须有更好的方法来做到这一点。
到目前为止,非常感谢大家的帮助!我确信这个问题没有得到解决的唯一原因是我缺乏沟通技巧。