csv中的计数

时间:2015-07-22 07:41:40

标签: c# arrays csv count split

我正在尝试为学校项目编写一个程序,该程序将读取每行包含名称的csv文件,并输出每个名称及其在列表框中出现的次数。我希望它不是为特定名称预先设置,但我想这也可以。到目前为止,我有这个,但现在我被卡住了。

这是我到目前为止所做的:

string[] csvArray;
string line;
StreamReader reader;
OpenFileDialog openFileDialog = new OpenFileDialog();

//set filter for dialog control
const string FILTER = "CSV Files|*.csv|All Files|*.*";
openFileDialog.Filter = FILTER;

//if user opens file and clicks ok
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
    //open input file
    reader = File.OpenText(openFileDialog.FileName);

    //while not end of stream
    while (!reader.EndOfStream)
    {
        //read line from file
        line = reader.ReadLine().ToLower();

        //split values
        csvArray = line.Split(',');

1 个答案:

答案 0 :(得分:1)

不知道你的完整CSV结构,我会做类似的事情:

//outside of loop
var nameCounterDict = new Dictionary<string, int>();

//in loop
//csvName is the name of the current csv token you're parsing
int itemCount = 0;

if(!nameCounterDict.TryGetValue(csvName, out itemCount))
    nameCounterDict.Add(csvName, 0)

nameCounterDict[csvName]++;

这会在每次出现唯一名称时填充字典,如果名称已存在,则会增加一个int计数。

解析完文件后,您可以循环字典以获取每个名称和计数器以供显示。