如何将数据网格转换为树状结构,是否能提高搜索速度

本文关键字:高搜索 是否 速度 搜索 结构 数据网 数据 网格 转换 | 更新日期: 2023-09-27 18:05:24

我尝试解决一个电话业务问题,说有非常庞大的通话记录,每条记录主要包含"来电人数"、"被叫人数"、"开始日期时间"、"持续时间"。

原始数据保存在excel中,我已经导入到infragistics的超网格控制中,说它是grid_A.

我想做的是:对于grid_A之外的某个呼叫记录,搜索grid_A并查找是否有匹配的记录。匹配意味着两条记录具有相同的"呼叫者num","被叫num",并且两条记录具有相似的"起始日期时间","持续时间",例如,它们的"起始日期时间"为
00:10:00和00:12:00,只差2分钟。

因为这样的比较也会做很多次,而且目前的搜索代码太慢,我想如果我可以把网格数据变成树结构。树I图像的形式是:
第一层是"caller num",假设"caller num"有100个节点,它的下面是"被叫num",假设对于每个"调用num",可能有1-10个"被叫num"。最后一层是"开始时间"answers"持续时间"。

我想知道的是:如果这个结构可以用c#实现,以及如何实现,这个结构是否可以大大提高我的搜索。

期待您的帮助

如何将数据网格转换为树状结构,是否能提高搜索速度

我想做的是:对于grid_A之外的某个呼叫记录,搜索grid_A并查找是否有匹配的记录。匹配意味着两条记录具有相同的"呼叫者num","被叫num",并且两条记录具有相似的"开始日期时间","持续时间",例如,它们的"开始日期时间"为00:10:00和00:12:00,只差2分钟。

听起来你是在尝试对网格中显示的记录进行搜索,尽管我承认我在解析你的语言时遇到了困难。

如果是这种情况,并且由于您只有四列,我建议在所有记录上创建索引(Dictionary<string, IEnumerable<object>>),该索引采用caller numcalled num并将其存储为键(值将是与给定键匹配的行对象)。然后,您可以有效地找到匹配的候选项,并使用Linq对(理想情况下更小的)记录子集进行排序,以找到进一步满足您的标准的记录。

实际上,考虑到这一点,这种方法将问题变成了一个map-reduce问题,其中map阶段是查询单个索引条目以找到匹配的条目。linq查询可以并行执行,以进一步加快执行时间。