使用linq查询集合,分组和汇总某些项目

时间:2014-12-19 16:51:59

标签: .net vb.net linq

出于某种原因,我无法获得正确执行以下操作的Linq语句的正确vb.net语法(visual studio 2010)。最简单,最直接的代码将不胜感激。

问题在于:

我有大约45,000个对象的集合,需要总结一些数据。

Collection name:    DrillableData
Object name:        Ord_Detail

感兴趣的领域:

Ord_detail.routeno  

(整数 - 用于识别路线编号。在45,000个项目的总人口中,只有20个左右的路线编号。)

Ord_Detail.TotPrice

(双倍 - 包含销售金额)

Ord_Detail.ProdQty

(整数 - 包含销售数量)

(还有其他领域,但我只对routeno总结的TotPrice和ProdQ​​ty感兴趣。)

我需要的是通过routeno总结Totprice和ProdQ​​ty。

结果应该产生一个大约20行的列表,每行有3行数据Route#,TotPrice,ProdQ​​ty。你能给我一个查询集合的Linq代码吗?

到目前为止,我已经能够把它放在一起,但是,显然这不会产生我需要的东西。

        Dim Thistotal2 As Object = (From Ord_detail In DrillableDetails
                       Group Ord_detail By Ord_detail.routeno _
                       Into Group _
                       Select totprice = Group.Sum(Function(ord_detail) ord_detail.totprice))


        For Each totprice In Thistotal2
            Total = totprice
        Next

1 个答案:

答案 0 :(得分:0)

试试这个:

    Dim TotalsByRoute = From Order_Detail In DrillableDetails
                        Order By Order_Detail.routeno
                        Group Order_Detail By Order_Detail.routeno
                        Into Route = Group
                        Select New With {
                            .RouteNumber = routeno,
                            .TotalQty = Route.Sum(Function(x) x.ProdQty),
                            .TotalPrice = Route.Sum(Function(x) x.TotPrice)
                        }