#vb.net #datatable #sum
Вопрос:
Я бы хотел суммировать все строки в таблице данных без a для каждой, потому что количество строк может быть очень большим. Количество столбцов неизвестно, поэтому я не могу просто добавить все строки(столбцы) строки(столбцы)…
Col1 Col2 Col3 Всего 1 2.11 3.11 6.22
Есть какие-нибудь предложения о том, как это сделать?
Надеюсь получить от вас весточку.
Комментарии:
1. Без цикла не обойтись, независимо от того, видите вы его (
For...Each
) или нет(LINQ).2. Является ли тип этих столбцов
Double
илиString
?3. Это двойной тип
Ответ №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
столбец-был просто для того, чтобы показать нам примерную строку.