Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 二维阵列的快速搜索_Vb.net_Linq_Arrays - Fatal编程技术网

Vb.net 二维阵列的快速搜索

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

我需要一种快速搜索大型二维数组的方法。我从Excel中提取数组,因此1维表示行,第2维表示列。我希望获得列与某些条件匹配的行的列表。我需要知道行号(或数组的索引)

例如,如果我从excel中提取一个范围。我可能需要找到列A=“dog”和列B=7以及列J>“A”所在的所有行。我只知道在运行时要查找哪些列和哪些值,因此无法硬编码列索引

我可以使用一个简单的循环,但这是否有效?我需要运行它几千次,每次搜索不同的条件

      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。

您的代码似乎需要检查每一行的每一列,但您的描述似乎不是所有列都需要检查。是哪一列?有可能检查每一列。检查哪些列是一个动态决定。