LINQ-分组和

时间:2019-03-25 11:38:06

标签: .net vb.net linq

我有一个DataTableCategoryUnsummarised),其中有三列:CategoryDataSortNet

这用于生成按类别显示总计的报告。报告应用程序是Devexpress XtraReports。这在他们的布局脚本中。

此表的每个类别都有几行不同的网络。 DataSort列仅用于确保类别“ Other”在排序时显示在列表的最后。只会是1或2。

数据示例:

enter image description here

我正在尝试创建一个新表,该表是按类别和数据排序分组的Net的总和。

所需数据:

enter image description here

以下是我根据StockOverflow上的其他示例尝试过的方法,但是它给了我一个错误。

    ' Sets columns in CategorySummary table
        CategorySummary = CategoryUnsummarised.clone()


    ' Now summarises the rows. Groups by Category and Datasort, and gives sum total.

        Dim CatGroups = CategoryUnsummarised.AsEnumerable().
            GroupBy(Function(row) New With {
                Key .Category = row.Field(Of String)("Category"),
                Key .DataSort = row.Field(Of integer)("DataSort")
            })

        For Each GroupRow In CatGroups
            CategorySummary.Rows.Add(GroupRow.Key.Category, GroupRow.Sum(Function(row) row.Field(Of decimal)("Net")), GroupRow.Key.DataSort)
        Next

这是我得到的错误:

enter image description here

如果我将GroupRow声明为变量,则它允许代码,但是我得到以下信息:

enter image description here

据我所知,Linq代码是有效的。

1 个答案:

答案 0 :(得分:0)

您可以使用{ "pages": [ { "label": "SomeLabel", "name": "Some", "sections": [ { "type": "Repeat", "label": "Label 1", "name": "Name 1", "rows": [ { "pages": [ { "label": "Label 1", "name": "Name 1", "sections": [ { "type": "Flow", "label": "Label 2", "name": "Name 2", "answers": [ { "label": "Question Label", "question": "Question", "values": [ "Value A", "Value B" ], "valuesMetadata": [ { "display": [ "Display A", "Display B" ], "row": { "columns": [] } } ] } ] } ] } ] } ], "footer": null } ] } ] } 方法:

GroupBy

这应该给出一个如何实现您想要的目标的想法。