2012-05-12 196 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