【问题标题】:How to sum all rows into a total column without a set number of columns?如何在没有设定列数的情况下将所有行汇总为总列?
【发布时间】:2021-05-23 10:34:52
【问题描述】:

我想总结一个数据表中的所有行,而不是每个行,因为行数可能非常大。 列数是未知的,所以我不能简单地添加所有的行(列)+行(列)...

Col1 Col2 Col3 总计 1 2.11 3.11 6.22

关于如何做到这一点的任何建议?

希望收到您的来信。

【问题讨论】:

  • 没有循环是没有办法的,不管你是否看到它(For...Each)或没有(LINQ)。
  • 这些列的类型是Double还是String
  • Double 类型

标签: vb.net datatable sum


【解决方案1】:

你不能在没有循环的情况下对所有行的所有列求和,这在技术上是不可能的。也许您认为 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-列只是为了向我们展示一个示例行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-21
    • 1970-01-01
    • 2023-01-30
    • 1970-01-01
    • 2022-11-22
    • 2019-08-18
    • 1970-01-01
    • 2022-12-05
    相关资源
    最近更新 更多