我有一个xml,我正在解析并尝试从中提取一些数据。假设解析输入的xml文件后得到的数据集有(2)表。
表#1包含IP地址和主键。 表#2包含端口号和匹配的主键。
我想通过两个表并生成一个包含IP地址和匹配端口的对象。基本上合并来自共享相同主键的两个表的数据。
现在,我正在使用嵌套在另一个foreach循环中的foreach循环。外部通过每个IP地址,内部通过每个端口并匹配相同的主键。
结果有效,但它是O(n ^ 2)。有更快的方法吗?
不过,我正在使用C#答案 0 :(得分:1)
首先,确保将每个PrimaryKey
的DataTable
属性设置为相应的列。然后,使用table.Rows.Find(primaryKeyValue)
从第二个DataTable
中取出相应的行,而不是内循环。在NT和Compact框架上,这将在内部创建和使用red-black tree索引,为您提供O(n log n)时间。
要获得O(n),您需要在第二个表中创建一个Dictionary
(在内部实现为hash table)行并对此执行查找。确保您创建的Dictionary
{{1}}足够capacity,以便在插入过程中不需要调整其大小。