Как я могу получить СУММУ элементов в моем сгруппированном запросе? - PullRequest
1 голос
/ 16 декабря 2011

У меня есть список почтовых индексов в запросе (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()

Результаты, которые я получаю, , поэтому близки к тому, что мне нужно, но я получаю кучу объектов InstructorReferrals в столбце lwrgrpq, и я хочу сделать простую сумму всех рефералов 'целые числа в этих объектах 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 Ответ

2 голосов
/ 16 декабря 2011

Я не знаком с VB.NET, но вы получаете сообщение об ошибке, потому что вы не задали имена свойств в анонимном типе. Попробуйте это в предложении выбора:

select new with { 
                    .AreaDistrict= tip.AreaDistrict,
                    .ReferralSum =lwrgrpq.Sum(function(x) x.Referrals) 
                }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...