ファイルをグローバル配列に読み込み、配列をループして各文字列を対応する量に識別し、それぞれのグループで合計を見つけようとしています。そして、それらのグループをそれぞれ固有の番号で分割します。
私が読んでいるテキストファイル:
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.");
}
}
}
これを行うにはもっと良い方法が必要だと思います。
これまでのご協力ありがとうございました!この問題が解決されなかった唯一の理由は、コミュニケーション能力の欠如だと確信しています。