如何获取分组查询中项目的总和?

时间:2011-12-16 14:11:59

标签: vb.net linq linq-to-sql

我有一个查询中的邮政编码列表(ThisInstructorsPostcodes)和另一个回退销售推介的查询(LastWeeksReferrals)

我使用以下语法来执行LEFT OUTER JOIN的linq等价物,所以我总是得到一个邮政编码,即使没有推荐它。

        dim final = from tip in ThisInstructorsPostcodes _
        group join lwr in LastWeeksReferrals on tip.PostcodeID equals lwr.PostcodeID Into lwrgrp = group _
        from lwrgrpq in lwrgrp.DefaultIfEmpty _
        select new with {tip.AreaDistrict, lwrgrpq }

    final.dump()

我得到的结果是所以接近我需要的,但我在lwrgrpq列中获得了一堆InstructorReferrals对象,我想要做的是所有'的简单总和'这些InstructorReferrals对象中的引用整数。

Results in LinqPad

我认为这样可行:

        dim final = from tip in ThisInstructorsPostcodes _
        group join lwr in LastWeeksReferrals on tip.PostcodeID equals lwr.PostcodeID Into lwrgrp = group _
        from lwrgrpq in lwrgrp.DefaultIfEmpty _
        select new with {tip.AreaDistrict, lwrgrpq.Sum(function(x) x.Referrals) }

...但它没有 - 失败并出现错误:

  

匿名类型成员名称只能从没有参数的简单或限定名称推断。

我正在努力,因为我只使用了这个linq查询结构来模仿sql的外连接行为,有没有人知道如何解决这个问题,以便我的分组项不是匿名类型?

1 个答案:

答案 0 :(得分:2)

我对VB.NET并不熟悉,但是您收到错误是因为您没有在匿名类型中设置属性名称。在select子句中尝试这个:

select new with { 
                    .AreaDistrict= tip.AreaDistrict,
                    .ReferralSum =lwrgrpq.Sum(function(x) x.Referrals) 
                }