2011-12-16 99 views
1

我有邮政编码的列表中查询(ThisInstructorsPostcodes)和拉回销售推荐(LastWeeksReferrals)如何获得我的分组查询中项目的总和?

我使用下面的语法来执行LINQ相当于LEFT OUTER的另一个查询JOIN所以我总是得到一个邮政编码回来,即使没有推荐它。

 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) } 

...但事实并非如此 - 失败,出现错误:

Anonymous type member name can be inferred only from a simple or qualified name with no arguments.

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

回答

2

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

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