【发布时间】:2021-06-01 04:51:24
【问题描述】:
我有一个包含 Double 或 String(字符)字段的 DataTable。使用 Select 和 ToArray 方法,如何将我知道是双精度的列提取到多维双精度数组中?
对于初学者,我可以使用以下方法将 Age 和 Weight 列获取到锯齿状数组中
Dim arrayOfDoubles()() As Double = dt.AsEnumerable().Select(Function(x) {Convert.ToDouble(x("Age")), Convert.ToDouble(x("Weight"))}).ToArray()
但是,上面的结果是一个锯齿状的,即 ()() 双数组,我无法将其输入到我的处理中——而且我不想编写循环来挑选 ()() 中的元素让它们进入 (,)。
所以,如果我知道我有 1000 行和 20 列在 DataTable 中是双精度的(并且知道它们的名称),我如何创建一个 Double(20,1000) 数组或一个 Double(1000,20)直接使用 Select 和 ToArray?
另外,如果我想过滤年龄>40,并获取相同的 20 列,但结果只有 300 行,该怎么办。如何通过此过滤创建 Double(20,300) 数组或 Double(300,20)?
【问题讨论】:
-
二维数组没有 LINQ 运算符,因此您需要使用两个嵌套的
For Each并构建二维数组。你知道该怎么做吗? -
你能改变你的“处理”,让它接受锯齿状数组吗?
标签: arrays vb.net linq select datatable