2012-05-12 150 views
0

假设我有一个值列表。 (目前在一张纸上,但这可能是列表或任何你建议的)。根据列表检查数据表列

如下:

Name, 
Type, 
Phone, 
Contract, 
Remark 

现在我有一个数据表是从文件导入。我需要检查数据表是否包含列表中的相同列。 (所以我的数据表中应该有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`. 

,但我倒是像一个更快的解决方案。

+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); 
     } 
    } 
} 
+0

太好了。非常感谢! – user194076