如何加快DataColumn检查?

时间:2018-07-16 13:19:24

标签: c# datatable

string specifiedSymbol = "MySymbol";

Systems.Data.DataTable table = CreateInitialTable();

if (!table.Columns.Contains(specifiedSymbol))
       table.Columns.Add(specifiedSymbol, Type.GetType("System.Double"));

我刚刚描述了上面的陈述,看来中频大约需要10毫秒。这对我的应用来说是很长的时间。我还能如何更有效地检查数据表中是否存在列?

1 个答案:

答案 0 :(得分:0)

您使用的是什么类或导入尚不清楚,所以我将提供一个通用答案。

在具有O(n)复杂度(或更糟)的集合上调用Contains()时,可以通过执行以下操作之一来提高性能:

  • 管理一个单独的HashSet,在其中镜像对O(n)集合所做的任何更改,然后使用Contains()的{​​{1}}方法测试是否存在。
  • 如果您无法跟踪对集合的更改,则可能仍然可以通过创建HashSet并在每次需要调用HashSet时用集合的内容填充它来提高性能。 strong> iff ,您需要连续多次调用它,即没有间歇性的更改操作,并且使用集合的实现所浪费的时间要比完全根据其内容创建新的Contains()花费的时间更长。出于性能方面的考虑,这比前者更不可取,但是对于代码可管理性而言,则更可取。

最好的情况是能够编写一个从集合的类继承的新类,并将所有逻辑放在其中。