如何将CSV数据存储到C#中的数组中?

时间:2019-03-07 11:20:54

标签: c# console

我有一个 9列的CSV文件。 (Date,DrawNumber,N1,N2,N3,N4,N5,N6,B1)

上面的列下面是 55行的数据。

行中的数据由(,)分隔符分隔。


1)在控制台应用程序中,用户将输入将存储的6/7数字。

2。)如何读取CSV数据并将其保存到数组中,这样我可以计算每个数字(在用户输入的6或7个数字集中)被发现了多少次CSV(来自这些列:N1,N2,N3,N4,N5,N6,B1)。例如:数字33 =被发现12次,数字14被发现11次,...(以此类推,对于其余输入的数字)

3。)从用户要输入的6或7个数字中,我还必须查看(用户输入的)数字与CSV的每行相匹配。换句话说,我必须匹配每行的组合(N1,N2,N3,N4,N5,N6,B1)


读取和存储数据以进行此类数据处理的最佳方法是什么? (您的示例代码将不胜感激)?

谢谢。

CSV数据示例:

EXAMPLE OF CSV DATA:

1 个答案:

答案 0 :(得分:0)

创建一个与列匹配的类 因此,假设9列意味着9个属性。

public class CsvData
{
    public string column1 { get; set; }
    public string column2 { get; set; }
    public string column3 { get; set; }
    public string column4 { get; set; }
    public string column5 { get; set; }
    public string column6 { get; set; }
    public string column7 { get; set; }
    public string column8 { get; set; }
    public string column9 { get; set; }
}

现在最好避免将csv文件映射到CsvData对象的列表中

public List<CsvData> ReadCsv(string file)
{
    List<CsvData> collection = new List<CsvData>();
    using (var streamReader = new StreamReader(file))
    {
        while (!streamReader.EndOfStream)
        {
            string[] columns = streamReader.ReadLine().Split(';');

            CsvData data = new CsvData();
            data.column1 = columns[0];
            data.column2 = columns[1];
            data.column3 = columns[2];
            data.column4 = columns[3];
            data.column5 = columns[4];
            data.column6 = columns[5];
            data.column7 = columns[6];
            data.column8 = columns[7];
            data.column9 = columns[8];

            collection.Add(data);
        }
    }

    return collection;
}

现在用于计算包含数字或术语的行

public int CountRowsWithTerm(List<CsvData> collection, string term)
{
    List<CsvData> RowsContainingTheTerm = collection.Where(row => row.column1 == term || row.column2 == term || row.column3 == term ||
                            row.column4 == term || row.column5 == term || row.column6 == term ||
                            row.column7 == term || row.column8 == term || row.column9 == term).ToList();
    return RowsContainingTheTerm.Count();
}

希望这对您有帮助