使用自定义类对LINQ查询中的所有列求和

时间:2014-09-18 23:35:47

标签: asp.net vb.net linq

我是新手在VB.Net中使用LINQ(在ASP.Net中),我似乎无法弄清楚如何对以下查询中返回的数据进行求和。在我的实际代码中有26个项而不是只有三个,我使用自定义类来组织它们。我已经找到了无数的例子,说明如何在单独选择它们时总结一些单独的项目,但没有总结在一个类中组织26个单独的列。

编辑:很抱歉没有提前清楚。我希望对每一栏进行总结。例如,如果我选择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
                                       }

更新: 所以我最终接受了建议,只使用了数据表。我同意,使用起来要容易得多。这就是我最后要做的就是总结所有列。这将把任何数据表作为输入并吐出一个具有相同结构的新数据表,只有一行包含数字列的总和值。

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

1 个答案:

答案 0 :(得分:0)

由于您似乎正在从数据库加载数据,因此更好的选择可能是将数据存储为DataTable,而不是自定义类对象的集合。这为您提供了按行或列访问数据的更多选项。