.NET DataSet查询效率

时间:2009-11-17 03:48:13

标签: c# linq dataset

我有一个xml,我正在解析并尝试从中提取一些数据。假设解析输入的xml文件后得到的数据集有(2)表。

表#1包含IP地址和主键。 表#2包含端口号和匹配的主键。

我想通过两个表并生成一个包含IP地址和匹配端口的对象。基本上合并来自共享相同主键的两个表的数据。

现在,我正在使用嵌套在另一个foreach循环中的foreach循环。外部通过每个IP地址,内部通过每个端口并匹配相同的主键。

结果有效,但它是O(n ^ 2)。有更快的方法吗?

不过,我正在使用C#

1 个答案:

答案 0 :(得分:1)

首先,确保将每个PrimaryKeyDataTable属性设置为相应的列。然后,使用table.Rows.Find(primaryKeyValue)从第二个DataTable中取出相应的行,而不是内循环。在NT和Compact框架上,这将在内部创建和使用red-black tree索引,为您提供O(n log n)时间。

要获得O(n),您需要在第二个表中创建一个Dictionary(在内部实现为hash table)行并对此执行查找。确保您创建的Dictionary {{1}}足够capacity,以便在插入过程中不需要调整其大小。