我需要一种快速搜索大型二维数组的方法。我从Excel中提取数组,因此1维表示行,第二维表示列。我希望获得列符合特定条件的行列表。我需要知道行号(或数组的索引)。
例如,如果我从excel中提取范围。我可能需要找到列A =“dog”且列B = 7且列J>的所有行。 “一个”。我只知道在运行时找到哪些列和哪个值,所以我不能对列索引进行硬编码。
我可以使用一个简单的循环,但这有效吗?我需要运行几千次,每次搜索不同的标准。
For r As Integer = 0 To UBound(myArray, 0) - 1
match = True
For c = 0 To UBound(myArray, 1) - 1
If not doesValueMeetCriteria(myarray(r,c) then
match = False
Exit For
End If
Next
If match Then addRowToMatchedRows(r)
Next
doesValueMeetCriteria函数是一个简单的函数,它根据查询要求检查数组元素的值。例如A栏=狗等。
从数组创建数据表并使用.select方法是否更有效率?
我可以用某种方式使用Linq吗?
也许某种形式的字典或哈希表?
或者简单的循环是最有效的吗?
非常欢迎您的建议。
答案 0 :(得分:0)
不知道完全你想要在这里实现什么,有几件事情会浮现在脑海中......因为你说它是一个大型数据库;你应该至少排序你的数组。然后你可以“冒泡排序”它来找到初始选择标准,大大减少你现在拥有的强制循环。
此外,由于这是来自EXCEL电子表格,或许您可以让电子表格执行some_or_all工作然后获取数据。
HASTABLE需要一个唯一的KEY,好像你可能会在行中复制单元格数据;而且我知道没有办法要求HASHTABLE根据“> ='a'”的键返回值
如果您要根据各种不同的标准进行大量搜索,那么您可能只需要节省大量工作并将数据泵入数据库表,以便您可以根据需要使用SQL。 / p>