比较datatable的列和if语句

时间:2013-09-25 01:22:30

标签: c# winforms csv ado.net datatable

我需要导入CSV文件然后上传到Datatable。然后我需要验证列以满足要求并确保最终用户导入格式正确。在CSV文件中必须有3列即项目,价格和措施。

当我尝试将列名称与字符串进行比较时,错误就开始了,这里是代码片段。

private bool verifyColumn(DataTable dt)
{
    /* Column 
     * 1) items
     * 2) price
     * 3) measure
    */

    foreach (DataColumn col in dt.Columns)
    {  
        if (col.ColumnName.ToString() == "price")
        {
            continue;
        }
        else if (col.ColumnName.ToString() == "item")
        {
            continue;
        }
        else if (col.ColumnName.ToString() == "measure")
        {
            continue;
        }
        else
        {
            return false;
        }                           
    }

    return true;
}

当调试模式时,第一个循环显示'item'但不能捕获if语句。我怎么能解决这个问题?

使用A Portable and Efficient Generic Parser for Flat Files将CSV文件导入数据表的代码。

GenericParserAdapter paste = new GenericParserAdapter(fileName);                    
paste.FirstRowHasHeader = true;
paste.ColumnDelimiter = ';';

DataTable dt dt = paste.GetDataTable();
if (dt.Columns.Count != 3)
{ 
    MessageBox.Show(errorMessage, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
    dt.Clear();
    return;
}

// Here to do verify columт

1 个答案:

答案 0 :(得分:0)

在我看来,第一列是“项目”,但您按“项目”进行过滤。

P / S:你应该创建一个变量来保存col.ColumnName.ToString()值。 (鉴于ColumnName不是字符串,这有点奇怪)