0

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

如下:

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`.

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

4

1 回答 1

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);
        }
    }  
}
于 2012-05-12T23:57:22.183 回答