在我开始讲解问题的实质之前,先提供一些细节。我有两个数据源——一个是包含零件编号、描述等信息的SQL Server,另一个是没有传统意义上的数据库的CAD系统。我的目标是从SQL Server中读取物料清单,并将其与CAD装配图进行比较,以确保CAD系统包含与SQL Server相同的信息。
从SQL Server获取数据相对简单。我查询数据库并填充数据网格。完成。快速。容易。
从CAD系统获取数据则需要更多的工作。我必须加载装配图以获取所有组件部件的列表,然后加载这些单独的图纸以从图纸中提取“零件编号”属性。这是一个有点耗时且缓慢的过程(不幸的是),因为每个文件都必须实际访问。我将这些属性加载到一个数组中(我想列表可能更有效)。
现在我有了一个带有零件号的数据网格和数组。我需要比较它们并相应地给网格着色。如果该零件存在于两个数据源中,则网格应保持透明;如果只存在于网格中,则将行颜色设置为黄色;如果只存在于数组中,则添加一行并将其颜色设置为红色。
据我所知,这意味着需要在网格的每一行中循环遍历数组。思路如下:
1. 将网格默认为黄色行。 2. 循环遍历网格并循环遍历数组进行比较。如果找到匹配项,则使该行透明并从数组中删除该元素。 3. 完成第2步后,数组应仅包含未在网格中找到的元素。调整数组大小以删除空元素。 4. 将数组的元素添加到网格中,并将这些新行颜色设置为红色。
这种逻辑的问题在于,从性能角度来看,它似乎很昂贵。肯定有更好的方法吧?此外,如果我以某种方式(如重新排序)修改网格,则必须再次执行此过程。我真的很需要一些建议。
谢谢!
注意:在Visual Studio 2005中编写。
从SQL Server获取数据相对简单。我查询数据库并填充数据网格。完成。快速。容易。
从CAD系统获取数据则需要更多的工作。我必须加载装配图以获取所有组件部件的列表,然后加载这些单独的图纸以从图纸中提取“零件编号”属性。这是一个有点耗时且缓慢的过程(不幸的是),因为每个文件都必须实际访问。我将这些属性加载到一个数组中(我想列表可能更有效)。
现在我有了一个带有零件号的数据网格和数组。我需要比较它们并相应地给网格着色。如果该零件存在于两个数据源中,则网格应保持透明;如果只存在于网格中,则将行颜色设置为黄色;如果只存在于数组中,则添加一行并将其颜色设置为红色。
据我所知,这意味着需要在网格的每一行中循环遍历数组。思路如下:
1. 将网格默认为黄色行。 2. 循环遍历网格并循环遍历数组进行比较。如果找到匹配项,则使该行透明并从数组中删除该元素。 3. 完成第2步后,数组应仅包含未在网格中找到的元素。调整数组大小以删除空元素。 4. 将数组的元素添加到网格中,并将这些新行颜色设置为红色。
这种逻辑的问题在于,从性能角度来看,它似乎很昂贵。肯定有更好的方法吧?此外,如果我以某种方式(如重新排序)修改网格,则必须再次执行此过程。我真的很需要一些建议。
谢谢!
注意:在Visual Studio 2005中编写。