左边连接group by和sum in linq to sql

时间:2014-03-19 15:50:17

标签: c# linq

我正在尝试转换

的T-sql
select c.description, sum(t.quantity), sum(t.Price) from trn_itm t
left join CAFE c on t.Item_key = c.dfm_key
where transaction_key = 87378
group by c.Description

我的linq是

var query = from p in DfmSession.CurrentContext.TRN_ITMs
            join c in DfmSession.CurrentContext.CAFEs on p.Item_key equals c.Dfm_key into t
            from rt in t.DefaultIfEmpty()
            where p.Transaction_key == _dfmkey
            select new
            {
                Dfm_key = (int?)rt.Dfm_key,
                rt.Description,
                p.Quantity,
                p.Price
            };

如何获得Sum(p.Quantity)和Sum(p.Price)?

4 个答案:

答案 0 :(得分:1)

var query = from p in DfmSession.CurrentContext.TRN_ITMs
            join c in DfmSession.CurrentContext.CAFEs on p.Item_key equals c.Dfm_key into t
            from rt in t.DefaultIfEmpty()
            where p.Transaction_key == _dfmkey
            group p by rt.Description into g
            select new
            {
                Description = g.Keu
                Quantity = g.Select(x => x.Quantity).Sum()
                Price = g.Select(x => x.Price).Sum()
            };

答案 1 :(得分:1)

var query = from p in DfmSession.CurrentContext.TRN_ITMs
        join c in DfmSession.CurrentContext.CAFEs on p.Item_key equals c.Dfm_key into t
        from rt in t.DefaultIfEmpty()
        where p.Transaction_key == _dfmkey
        group by rt.Description into g
        select new
     {
         description = g.Key,
         Price = g.Sum(x => x.Price),
         Quantity = g.Sum(x => x.Quantity)
     };

答案 2 :(得分:0)

group by rt.Description into g

然后在g上使用您选择的聚合函数,例如:

select new { Price = g.Sum(x => x.Price) }

答案 3 :(得分:0)

group by su.Description into h

然后在h上使用您选择的聚合方法,例如:

select new { Price = h.Sum(y =? y.Price) }