繁体   English   中英

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

[英]How to store CSV data into an array in C#?

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

在上述列下方是55行数据。

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


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

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

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


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

提前致谢。

CSV数据示例:

CSV数据示例:

创建一个与列匹配的类,因此假设有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();
}

希望这有所帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM