快速搜索二维数组

时间:2010-03-22 15:41:19

标签: vb.net linq arrays

我需要一种快速搜索大型二维数组的方法。我从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吗?

也许某种形式的字典或哈希表?

或者简单的循环是最有效的吗?

非常欢迎您的建议。

1 个答案:

答案 0 :(得分:0)

不知道完全你想要在这里实现什么,有几件事情会浮现在脑海中......因为你说它是一个大型数据库;你应该至少排序你的数组。然后你可以“冒泡排序”它来找到初始选择标准,大大减少你现在拥有的强制循环。

此外,由于这是来自EXCEL电子表格,或许您可以让电子表格执行some_or_all工作然后获取数据。

HASTABLE需要一个唯一的KEY,好像你可能会在行中复制单元格数据;而且我知道没有办法要求HASHTABLE根据“> ='a'”的键返回值

如果您要根据各种不同的标准进行大量搜索,那么您可能只需要节省大量工作并将数据泵入数据库表,以便您可以根据需要使用SQL。 / p>