Vb.net 二维阵列的快速搜索
我需要一种快速搜索大型二维数组的方法。我从Excel中提取数组,因此1维表示行,第2维表示列。我希望获得列与某些条件匹配的行的列表。我需要知道行号(或数组的索引) 例如,如果我从excel中提取一个范围。我可能需要找到列A=“dog”和列B=7以及列J>“A”所在的所有行。我只知道在运行时要查找哪些列和哪些值,因此无法硬编码列索引 我可以使用一个简单的循环,但这是否有效?我需要运行它几千次,每次搜索不同的条件Vb.net 二维阵列的快速搜索,vb.net,linq,arrays,Vb.net,Linq,Arrays,我需要一种快速搜索大型二维数组的方法。我从Excel中提取数组,因此1维表示行,第2维表示列。我希望获得列与某些条件匹配的行的列表。我需要知道行号(或数组的索引) 例如,如果我从excel中提取一个范围。我可能需要找到列A=“dog”和列B=7以及列J>“A”所在的所有行。我只知道在运行时要查找哪些列和哪些值,因此无法硬编码列索引 我可以使用一个简单的循环,但这是否有效?我需要运行它几千次,每次搜索不同的条件 For r As Integer = 0 To UBound(myArra
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函数是一个简单的函数,它根据查询要求检查数组元素的值。e、 g.A列=狗等
从数组创建datatable并使用.select方法是否更有效
我能以某种方式使用Linq吗
也许是某种形式的字典或哈希表
或者简单的循环是最有效的
您的建议非常受欢迎。不知道您在这里想要实现什么,我想到了几件事。。。因为你说它是一个大分贝;您至少应该对数组进行排序。然后,您可以对其进行“气泡排序”,以定位初始选择标准,从而大大减少了现有的强制循环
此外,由于这是来自EXCEL电子表格,也许您可以让电子表格完成一些或所有工作,然后获取数据
HASTABLE需要一个唯一的键,看起来您可能会在行中复制单元格数据;我知道没有办法让哈希表根据“key that>='a'返回值”
如果您打算根据各种不同的条件进行大量搜索,您可能只需节省大量工作,并将数据输入数据库表,以便根据需要使用SQL。您的代码似乎需要检查每一行的每一列,但您的描述似乎不是所有列都需要检查。是哪一列?有可能检查每一列。检查哪些列是一个动态决定。