哪里出错了?分组依据,加入,选择.net

时间:2017-06-29 15:48:39

标签: c# linq join linq-group

我不知道为什么它说不包含对ImporteSolicitado,interesesDemora和importeReintegro的定义,当它们是c的列和d的最后一个

var importes = (from c in _context.ReintegroSolicitado
                join d in _context.ReintegroRecibido on c.Expediente.ID equals d.Expediente.ID 
                group new {c,d} by new { c.Expediente.Codigo} into cd
                select new { ImporteSolictadoFinal = cd.Sum(b => b.ImporteSolicitado + b.InteresesDemora), ImporteReintegroFinal = cd.Sum(e => e.ImporteReintegro) });

2 个答案:

答案 0 :(得分:1)

您的group元素包含两个属性 c d 。所以你需要参考 这个属性为

...
select new { 
    ImporteSolictadoFinal = cd.Sum(b => b.c.ImporteSolicitado + b.c.InteresesDemora),
    ImporteReintegroFinal = cd.Sum(e => e.d.ImporteReintegro) }
...

答案 1 :(得分:0)

发布查询时,这很难实现。我尽我所能,但可能不完全正确。

           var importes = (from c in _context.reintegroSolicitado
                            join d in _context.reintegroRecibido on c.expediente.ID equals d.expediente.ID
                            select new { reintegroSolicitado = c, reintegroRecibido = c})
                            .GroupBy(x => new { c = x.reintegroSolicitado , d = x.reintegroRecibido})
                            .Select(cd => new { ImporteSolictadoFinal = cd.Sum(b => b.reintegroSolicitado.ImporteSolicitado + b.reintegroSolicitado.InteresesDemora), ImporteReintegroFinal = cd.Sum(e => e.reintegroRecibido.ImporteReintegro) });

        }

    }
    public class Context
    {
        public List<ReintegroSolicitado> reintegroSolicitado { get; set; }
        public List<ReintegroSolicitado> reintegroRecibido { get; set; }
        public Expediente expediente { get; set; }
    }
    public class ReintegroSolicitado
    {
        public Expediente expediente { get; set; }
        public int ImporteSolicitado { get; set; }
        public int InteresesDemora { get; set; }
        public int ImporteReintegro { get; set; }
    }
    public class Expediente
    {
        public int ID { get; set; }
        public int Codigo { get; set; }
    }