【问题标题】:How can I get a SUM of the items in my grouped query?如何获得分组查询中项目的总和?
【发布时间】:2011-12-16 23:24:31
【问题描述】:

我有一个查询中的邮政编码列表 (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 对象中的推荐人整数。

我认为这会起作用:

        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 的外连接行为,有谁知道我可以如何解决这个问题,以便我的分组项目不是匿名类型?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-28
      • 2020-06-21
      • 2017-02-16
      相关资源
      最近更新 更多