Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.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
Arrays 使用Select从数据表中双击(,)而不是双击()_Arrays_Vb.net_Linq_Select_Datatable - Fatal编程技术网

Arrays 使用Select从数据表中双击(,)而不是双击()

Arrays 使用Select从数据表中双击(,)而不是双击(),arrays,vb.net,linq,select,datatable,Arrays,Vb.net,Linq,Select,Datatable,我有一个带有双精度或字符串字段的数据表。使用Select和ToArray方法,如何将已知为双精度的列提取到多维双精度数组中 对于初学者,我可以使用 Dim arrayOfDoubles()() As Double = dt.AsEnumerable().Select(Function(x) {Convert.ToDouble(x("Age")), Convert.ToDouble(x("Weight"))}).ToArray() 然而,上面的结果是一个锯

我有一个带有双精度或字符串字段的数据表。使用Select和ToArray方法,如何将已知为双精度的列提取到多维双精度数组中

对于初学者,我可以使用

Dim arrayOfDoubles()() As Double = dt.AsEnumerable().Select(Function(x) {Convert.ToDouble(x("Age")), Convert.ToDouble(x("Weight"))}).ToArray()
然而,上面的结果是一个锯齿状的,即双数组,我无法将其输入到我的处理中,我不想编写循环来拾取元素,只是为了将它们输入到

因此,如果我知道我有1000行和20列,它们在DataTable中是双精度的,并且知道它们的名称,那么我如何直接使用Select和ToArray创建Double201000数组或Double1000,20数组


另外,如果我想过滤年龄>40的数据,并获取相同的20列,但结果只有300行,该怎么办。如何通过此筛选创建Double20300阵列或Double300,20?

您正在寻找类似的内容:

Dim arrayOfDoubles()() As Double = _
        dt.AsEnumerable() _
            .Select(Function(x) _
            { _
                Convert.ToDouble(x("Age")), _
                Convert.ToDouble(x("Weight")) _
            }) _
            .ToArray()
            
Dim output(arrayOfDoubles.Length, arrayOfDoubles.First().Length) As Double

For i = 0 To arrayOfDoubles.Length - 1
    For j = 0 To arrayOfDoubles.First().Length - 1
        output(i, j) = arrayOfDoubles(i)(j)
    Next
Next 

对于筛选问题,只需在创建输出之前将筛选添加到arrayOfDoubles即可解决。

2d数组没有LINQ运算符,因此需要对每个数组执行两个嵌套操作,然后构建2d数组。这是你知道怎么做的吗?你能改变你的处理,使它接受锯齿状数组吗?过滤:例如,AsEnumerable.WhereFunctionx DirectCastxAge,Double>40,或者使用datatable选择方法dt。选择[Age]>40@Enigmativity-谢谢,因为你的语法会很快把我推到2D数组中。作为一个小补丁,我将Dim outputarrayOfDoubles.Length,arrayOfDoubles.First.Length更改为Dim outputarrayOfDoubles.Length-1,arrayOfDoubles.First.Length-1为Double