c# 将 .csv 文件读入具有重复列名的 DataTable

标签 c# csv datatable duplicates

我有一个包含重复列名的 .csv 文件,即“类型”一词重复多次。

我有一个基本的 .csv 阅读器,它读入一个数组,然后按“,”拆分。但是,因为它随后被分配给 DataTable,所以我遇到任何具有重复列名的 .csv 文件的问题。

解决这个问题的最佳方法是什么?

    public void parseCSV(string file)
    {
        string[] Lines = File.ReadAllLines(file);

        string[] Fields;
        Fields = Lines[0].Split(new char[] { ',' });

        int Cols = Fields.GetLength(0);
        DataTable dt = new DataTable();

        //1st row must be column names; force lower case to ensure matching later on.
        for (int i = 0; i < Cols; i++)
            dt.Columns.Add(Fields[i], typeof(string));

        DataRow Row;
        for (int i = 1; i < Lines.GetLength(0); i++)
        {
            Fields = Lines[i].Split(new char[] { ',' });
            Row = dt.NewRow();
            for (int f = 0; f < Cols; f++)
                Row[f] = Fields[f];
            dt.Rows.Add(Row);

            dataGridView.DataSource = dt;
        }
    }

编辑: 测试我正在使用的 .csv 文件会引发有关 col2 的错误

col1,col2,col2,col3,col4,Time Modified
1,1,123456,1,1,15:30
2,2,654321,2,2,15:31

最佳答案

您可以添加一个后缀,例如 Type_1:

for (int i = 0; i < Cols; i++)
{
    string columnName = Fields[i];
    int num = 0;
    while (dt.Columns.Contains(columnName))
        columnName = string.Format("{0}_{1}", Fields[i], ++num);
    dt.Columns.Add(columnName);
}

关于c# 将 .csv 文件读入具有重复列名的 DataTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23519995/

相关文章:

c# - DevExpress Winform控件Radiobutton组

c# - 泛型结构 - 如何约束类型参数 C#

c# - Windows 窗体的大小是否包括其边框?

python - 迭代日期,计算每 24 小时周期的平均值

jquery - jQuery Datatable 和 jQGrid 的性能比较?

javascript - jquery DataTable 搜索和排序不起作用

c# - RadioButtonList 中 ListItems 的选项卡索引

python - 使用 python 读取 csv 中的特定列

mysql - MongoDB 类型从 NumberLong 更新为 String

c# - 在 C#.net 中处理大量数据表的有效方法