Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 导入数据表c时验证CSV文件的头#_C#_Csv_Datatable - Fatal编程技术网

C# 导入数据表c时验证CSV文件的头#

C# 导入数据表c时验证CSV文件的头#,c#,csv,datatable,C#,Csv,Datatable,很快,我将尝试将csv文件导入datatable。 我正在添加这样的列 DataTable data = new DataTable(); data.Columns.Add("ID", typeof(string)); data.Columns.Add("Name", typeof(string)).MaxLength = 150; data.Columns.Add("Last name", typeof(string)); 然后: using (var reader = new Strea

很快,我将尝试将csv文件导入datatable。 我正在添加这样的列

DataTable data = new DataTable();

data.Columns.Add("ID", typeof(string));
data.Columns.Add("Name", typeof(string)).MaxLength = 150;
data.Columns.Add("Last name", typeof(string));
然后:

using (var reader = new StreamReader(file.InputStream))
{

    DataRow row;

    var headers = reader.ReadLine();

    while (!reader.EndOfStream)
    {
        string line = reader.ReadLine();
        string[] value = line.Split(',');



        if (value.Length == data.Columns.Count)
        {
            row = data.NewRow();

            row.SetField(0, ParseInt(value[0]));
            row.SetField(1, value[1]);
            row.SetField(2, value[2]);



//and so on 
}
如果硬编码的标题与导入的文件相同,请提供验证标题的方法?
PS长度验证的效果不是很好。有时,如果CSV中的最后一列是emty,则最后一列不被计算。

在读取第一行后,您是否可以对标题进行拆分,然后循环标题的长度,并使用相应的datatable列标题检查标题值


如果由于最后一列为空而导致文件中的标题较少,则可以这样做,因为数据表中没有任何数据可添加到该列中,但是这样检查应该确保数据文件中一行中的值将进入datatable中名称与标题匹配的列。

难道不能在读取第一行后对标题进行拆分,然后循环标题的长度并使用相应的datatable列标题检查标题值吗


如果由于最后一列为空而导致文件中的标题较少,则可以这样做,因为数据表中没有任何数据可添加到该列中,但是这样检查应该确保数据文件中一行中的值将进入datatable中名称与标题匹配的列。

我不清楚“验证标题”是什么意思:对它们进行计数?除此之外还有什么重要的?您最好使用已建立的CSV库,而不是出于各种原因依赖
string.Split()
。另外,
Id
真的是字符串吗?如果它是为数据库绑定的,则应该从目标表创建datatable。我不清楚“验证头”是什么意思:计算它们?除此之外还有什么重要的?您最好使用已建立的CSV库,而不是出于各种原因依赖
string.Split()
。另外,
Id
真的是字符串吗?如果它是为数据库绑定的,则应该从目标表创建datatable