Linq to Entities从2个总和中查询总和

时间:2019-10-09 05:12:40

标签: c# linq-to-entities

您好,这是一个使用linq对实体执行的sql查询:

 private void GetDatas()
    {
        using(GSUITEEntities dc=new GSUITEEntities())
        {
            try
            {
                var query = from ent in dc.STOCK_ENT
                            join det in dc.STOCK_DET on ent.ENT_ID equals det.ENT_ID
                            join art in dc.FICHES_ARTICLES on ent.ART_CODE equals art.ART_CODE
                            join cli in dc.CLIENTS on ent.ENT_PROP equals cli.CLI_CODE
                            join seq in dc.MVTS_SEQUENCE on ent.ENT_ID equals seq.ENT_ID
                            join entr in dc.ENTREES_STOCKS on art.ART_CODE equals entr.ART_CODE                                
                            where seq.SEQ_STATUT != "V" && cli.CLI_CODE == "0030000"
                            && entr.ENTSTK_DATE_DEM == null
                            group new { ent, det, art, cli, seq, entr} by new
                            {
                                art.ART_CODE,
                                art.ART_LIBELLE1
                            } into grouped
                            let sumEntr=grouped.Sum(x=>x.det.DET_PNET)
                            where sumEntr<2000
                            orderby grouped.Key.ART_LIBELLE1
                            select new
                            {
                                code=grouped.Key.ART_CODE,
                                lib=grouped.Key.ART_LIBELLE1,
                                pnet=sumEntr,
                                pnetCong=grouped.Sum(x=>x.entr.ENTSTK_PNET)
                                // pnetTotal=pnet + pnetCong ; How to do that ??
                            };
            }
            catch (Exception)
            {

                throw;
            }
        }
    }

最后一行是评论。我想要一个计算字段来汇总2个分组的字段。 pnet + pnetCong。 这怎么可能 ? 谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

为什么不仅仅引入另一个透明标识符并使​​用它?

...
let sumEntr=grouped.Sum(x=>x.det.DET_PNET)
let sumEntstkPnet=grouped.Sum(x=>x.entr.ENTSTK_PNET)
where sumEntr<2000
orderby grouped.Key.ART_LIBELLE1
select new
{
    code=grouped.Key.ART_CODE,
    lib=grouped.Key.ART_LIBELLE1,
    pnet=sumEntr,
    pnetCong=sumEntstkPnet
    pnetTotal=sumEntr+sumEntstkPnet
};