根据列表检查数据表列

时间:2012-05-12 23:45:31

标签: c# asp.net

我们说我有一个值列表。 (目前在一张纸上,但这可能是List或你建议的任何内容。)

如下:

Name,
Type,
Phone,
Contract, 
Remark

现在我有一个从文件导入的数据表。我需要检查datatable是否包含列表中的相同列。 (所以我的数据表应该有5列Name, Type, Phone, Contract, Remark).我想检查无论位置如何,但如果列的持久位置更快,我宁愿更快的解决方案。 我知道你可以像

Foreach column in datatable 
if columnname exist in list and ListSize ==Datatable.Columns.Count then 
    continue 
else 
    return false`.

但我想要更快的解决方案。

1 个答案:

答案 0 :(得分:3)

查找值的最快方法是使用哈希表。在这种情况下,我建议HashSet<T>

var requiredColumns = new HashSet<string>
    { "Name", "Type", "Phone", "Contract", "Remark" };
if (datatable.Columns.Count != requiredColumns.Count) {
    Console.WriteLine("Number of columns does not match!");
} else {
    for (int i = 0; i < datatable.Columns.Count; i++) {
        string colname = datatable.Columns[i].Name;
        if (!requiredColumns.Contains(colname)) {
            Console.WriteLine("Unknown column [{0}]", colname);
        }
    }  
}