让我提供一些细节来解释我在尝试完成问题的细节之前要完成的工作。在VB.NET中比较数组
我有两个数据源 - 一个是包含部件号,描述等的SQL Server。另一个是CAD系统,没有传统意义上的数据库。我想要做的是从SQL Server中读出材料清单并将其与CAD装配图进行比较,以确保CAD系统包含与SQL Server相同的信息。
从SQL Server获取数据非常简单。我查询数据库并填充数据网格。完成。快。简单。
从CAD系统获取数据有一点涉及。我必须加载装配图以获得所有零部件的清单,然后加载这些独立的图纸以从图纸中拉出“零件号”属性。这是一个有点耗时和缓慢的过程(不幸),因为每个文件都必须实际访问。我将这些属性加载到数组中(我想列表可能更有效)。
所以,现在我有一个数据网格和数组与部分数字。我需要比较它们并相应地对网格着色。如果部件同时存在,网格应该保持透明;如果只存在于网格中,则将行变为黄色;如果仅存在于数组中,则添加一个红色的行。
尽我所知,这意味着循环遍历网格的每一行上的数组。思考过程如下:
- 默认网格为黄色行。
- 循环遍历网格并循环遍历数组进行比较。如果找到匹配项,则使该行透明并从数组中删除该元素。
- 第2步完成后,数组应该只包含在网格中找不到的元素。调整数组大小以删除空元素。
- 将数组的元素添加到网格,并将这些新行着色为红色。
这个逻辑的问题在于,从性能角度看它似乎很昂贵。当然有更好的方法?另外,如果我以某种方式修改网格(如度假村),我必须再次通过该过程。我真的很感激这方面的一些建议。
谢谢!
注:写在Visual Studio 2005中
正是我在想什么。好简洁的解释。 – Demi 2009-05-20 14:09:10
谢谢。我做了一些动作,听起来像你所建议的那样做会更快。但我会诚实的说,我是一个.NET开发者,所以我之前没有使用过字典。你会如此友善地给出一个创建字典函数的代码示例吗? – 2009-05-20 14:41:08
感谢您的代码示例。几个问题 - 1)当你创建字典 - 我的零件号码是字符串。我认为这意味着它应该是“字符串”,对吗? 2)您列为“零件”的第二个参数是期待的类型。我不明白你为什么要把“Part”放在那里。它不应该是字符串?我觉得Part是一个已经假定我创建的对象。 3)我的数组函数只是返回一个列表中的一个零件号码。所以我假设我只是循环它并将其输入到我的字典中,对吗? – 2009-05-20 15:22:05