【发布时间】:2009-05-20 13:48:41
【问题描述】:
在我进入问题的具体细节之前,让我提供一些细节来解释我想要完成的工作。
我有两个数据源——一个是包含部件号、描述等的 SQL Server。另一个是没有传统意义上的数据库的 CAD 系统。我要做的是从 SQL Server 中读取物料清单,并将其与 CAD 装配图进行比较,以确保 CAD 系统包含与 SQL Server 相同的信息。
从 SQL Server 获取数据非常简单。我查询数据库并填充数据网格。完毕。快的。很简单。
从 CAD 系统获取数据的过程稍微复杂一些。我必须加载装配图以获取所有零部件的列表,然后加载这些单独的图纸以从图纸中提取“零件编号”属性。这是一个耗时且缓慢的过程(不幸的是),因为必须实际访问每个文件。我将这些属性加载到一个数组中(我想一个列表可能更有效)。
所以现在我有一个带有零件编号的数据网格和数组。我需要比较它们并相应地为网格着色。如果部件存在于两者中,则网格应保持透明,如果仅存在于网格中,则将行着色为黄色,如果仅存在于数组中,则添加红色行。
据我所知,这意味着在网格的每一行上循环遍历数组。思路是这样的:
- 默认网格为黄色行。
- 遍历网格并遍历数组进行比较。如果找到匹配项,则使该行透明并从数组中删除该元素。
- 步骤 2 完成后,数组应该只包含在网格中找不到的元素。调整数组大小以移除空元素。
- 将数组元素添加到网格中,并将这些新行涂成红色。
这种逻辑的问题在于从性能的角度来看它似乎很昂贵。肯定有更好的方法吗?此外,如果我以某种方式(如度假村)修改网格,我必须再次完成该过程。我非常感谢您对此提出建议。
谢谢!
注意:用 Visual Studio 2005 编写。
【问题讨论】: