2014-09-18 4 views
0

Я новичок в использовании 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 
+0

Неясно, нужна ли вам сумма для каждой отдельной строки (сумма из 26 полей строки, сумма строк следующих полей и т. Д. До конца) или если вы хотите получить сумму все поля и все строки являются уникальной общей суммой. Не могли бы вы лучше объяснить? – Steve

ответ

0

Поскольку вы, кажется, загрузки данных из базы данных, это лучший вариант, вероятно, будет хранить данные в виде DataTable, а не набор объектов пользовательского класса. Это дает вам больше возможностей для доступа к данным по строке или столбцу.

Смежные вопросы