C# 从组合csv文件创建数据表时出错

C# 从组合csv文件创建数据表时出错,c#,csv,datatable,C#,Csv,Datatable,我有一个winform应用程序,它读取csv文件并将其转换为数据表。csv文件包含一列标题和多列实际数据。以下是创建数据表的函数: public DataTable CreateDataTable(char delimiter) { DataTable dt = new DataTable(); FileStream aFile = new FileStream("filepath_to_csv", FileMode.Open); using (StreamReader

我有一个winform应用程序,它读取csv文件并将其转换为数据表。csv文件包含一列标题和多列实际数据。以下是创建数据表的函数:

public DataTable CreateDataTable(char delimiter)
{
    DataTable dt = new DataTable();
    FileStream aFile = new FileStream("filepath_to_csv", FileMode.Open);
    using (StreamReader sr = new StreamReader(aFile, System.Text.Encoding.Default))
    {
        //read headers...
        string strLine = sr.ReadLine();
        string[] strArray = strLine.Split(delimiter);

        foreach (string value in strArray)
            dt.Columns.Add(value.Trim());

        DataRow dr = dt.NewRow();

        //read data...
        while (sr.Peek() > -1)
        {
            strLine = sr.ReadLine();
            strArray = strLine.Split(delimiter);
            dt.Rows.Add(strArray);
        }
    }
    return dt;
}
这个很好用。现在我有一堆csv文件,需要合并成一个csv文件。因此,我创建了一个新的csv文件,并将第一个csv文件中的所有行复制到其中(标题行+数据行)。对于每个其他csv文件,我只是将数据行复制到新的csv文件中。当我尝试读取新文件时,会出现如下错误:
列“column\u name”不包含在数据表中。


所有csv文件都具有相同的结构。当我分别读取每个csv文件时,效果很好。为什么会出现这些错误?

对于每个新的CSV文件,您可能需要在数据表中添加更多列。因此,当您打开一个新的CSV时,您必须检查datatable中是否已经存在列,如果没有,则添加到datatable。您是指此处的行“和许多包含实际数据的列”?您需要将右字符串定位到新行的右列中,strArray需要与该行的列相同数量的值。