0

値のリストがあるとしましょう。(現在は一枚の紙ですが、これはリストまたはあなたが提案するものである可能性があります)。

次のように:

Name,
Type,
Phone,
Contract, 
Remark

今、ファイルからインポートされたデータテーブルがあります。データテーブルにリストの同じ列が含まれているかどうかを確認する必要があります。(したがって、私のデータテーブルにはName, Type, Phone, Contract, Remark).、位置に関係なくチェックしたい5つの列が必要ですが、列の位置を保持する方が速い場合は、より高速なソリューションを好むでしょう。次のようなことができることを知っています

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

しかし、私はより速い解決策が欲しいです。

4

1 に答える 1

3

The fastest way to lookup a value is to use a hash-table. In this case I would suggest a 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 に答える