Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.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_Datatable_Sum - Fatal编程技术网

Vb.net 如何在不设置列数的情况下将所有行相加为一个总列?

Vb.net 如何在不设置列数的情况下将所有行相加为一个总列?,vb.net,datatable,sum,Vb.net,Datatable,Sum,我想把数据表中的所有行加起来,每个行都没有一个值,因为行的数量可能非常大。 列的数量是未知的,所以我不能简单地添加所有的行(列)+行(列) Col1 Col2 Col3总计 1 2.11 3.11 6.22 有什么建议吗 希望收到您的来信。您无法对所有行的所有列求和而不使用循环,这在技术上是不可能的。也许你认为LINQ可以神奇地做到这一点,而不需要一个循环。但它也使用循环,你只是看不到它们 但是,如果这些列的类型为Double,则以下内容应适用: Dim doubleColumns = tabl

我想把数据表中的所有行加起来,每个行都没有一个值,因为行的数量可能非常大。 列的数量是未知的,所以我不能简单地添加所有的行(列)+行(列)

Col1 Col2 Col3总计 1 2.11 3.11 6.22

有什么建议吗


希望收到您的来信。

您无法对所有行的所有列求和而不使用循环,这在技术上是不可能的。也许你认为LINQ可以神奇地做到这一点,而不需要一个循环。但它也使用循环,你只是看不到它们

但是,如果这些列的类型为
Double
,则以下内容应适用:

Dim doubleColumns = table.Columns.Cast(Of DataColumn).
    Where(Function(c) c.DataType = GetType(Double)).
    ToArray()
Dim totalSum As Double = table.AsEnumerable().
    Sum(Function(row) doubleColumns.Sum(Function(c) row.Field(Of Double)(c)))

我想,
Total
-列只是给我们展示了一个示例行。

无论您是否看到(
For…Each
)循环,都不可能没有循环(LINQ)。这些列的类型是
Double
还是
String
?它是双类型的