Я новичок в использовании LINQ в VB.Net (в ASP.Net), и я не могу понять, как суммировать данные, возвращаемые в следующем запросе. В моем фактическом коде есть 26 элементов вместо трех, и я использую собственный класс для их организации. Я нашел множество примеров того, как суммировать несколько отдельных элементов при их индивидуальном выборе, но ничего не суммировать 26 отдельных столбцов, организованных в классе.Сумма всех столбцов в запросе LINQ с использованием настраиваемого класса
Редактировать: Извините за то, что ранее не было ясно. Я надеюсь суммировать каждую колонку. Например, если я выбираю 7 дней данных, а не 7 строк с элементами item1, item2 и item3, это будет только одна строка с тремя столбцами, являющимися итогами этих строк. Надеюсь, что имеет смысл ...
Public Class cQuery
Public Property Item1 As Integer
Public Property Item2 As Integer
Public Property Item3 As Integer
End Class
Dim Query = From data In db.CombinedData
Select New cQuery With {
.Item1 = data.item01,
.Item2 = data.item02,
.Item3 = data.item03
}
UPDATE: Так что я в конечном итоге принимает совет и только с помощью DataTable. Я согласен, с ней работать намного проще. Вот что я сделал, чтобы суммировать все столбцы. Это займет какое-то количество данных в качестве ввода и выплетает новый тип данных с одинаковой структурой только с одной строкой, содержащей суммарные значения числовых столбцов.
Public Function SumTableRows(dtInTable As DataTable) As DataTable
Dim dtOutTable As New DataTable
dtOutTable = dtInTable.Clone()
dtOutTable.Rows.Add()
For i As Integer = 0 To dtOutTable.Columns.Count - 1
If IsNumeric(dtInTable.Rows(0).Item(i)) Then
dtOutTable.Rows(0).Item(i) = dtInTable.Compute("Sum(" + dtInTable.Columns(i).ColumnName + ")", "")
End If
Next
Return dtOutTable
End Function
Неясно, нужна ли вам сумма для каждой отдельной строки (сумма из 26 полей строки, сумма строк следующих полей и т. Д. До конца) или если вы хотите получить сумму все поля и все строки являются уникальной общей суммой. Не могли бы вы лучше объяснить? – Steve