我们说我有一个值列表。 (目前在一张纸上,但这可能是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`.
但我想要更快的解决方案。
答案 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);
}
}
}