C# 如何将group by with join从SQL Server转换为Linq?

C# 如何将group by with join从SQL Server转换为Linq?,c#,sql,sql-server,linq,C#,Sql,Sql Server,Linq,我在SQL Server中有以下代码: select SUM(td.Valor) as Total, s.Nome as [Servico Prestado] from Transacao tr left join TransacaoDivisao td on tr.CodTransacao = td.CodTransacao left join ServicosPrestado sp on td.CodServicoPrestado = sp.CodServicosPrestado left

我在SQL Server中有以下代码:

select SUM(td.Valor) as Total, s.Nome as [Servico Prestado] from Transacao tr
left join TransacaoDivisao td on tr.CodTransacao = td.CodTransacao
left join ServicosPrestado sp on td.CodServicoPrestado = sp.CodServicosPrestado
left Join servico s on sp.CodServico = s.CodServico
GROUP by s.nome order by 1 desc
但当我尝试转换为linq时,我有以下几点:

var res = 
  from transacao in dbContext.Transacao
  join td in dbContext.TransacaoDivisao on transacao.CodTransacao equals td.CodTransacao
  join sp in dbContext.ServicosPrestado on td.CodServicoPrestado equals sp.CodServicosPrestado
  join s in dbContext.Servico on sp.CodServico equals s.CodServico


  group s by s.Nome into gp
  select new
  {
      servicoPrestado = gp.Key,
      td.Valor // throw error
  };

您所做的是在您的代码中进行内部连接,就像在sql中一样,您编写了左连接,所以我将使用左连接

var res=(from tr in dbContext.Transacao
         join td in dbcontext.TransacaoDivisao
         on tr.CodTransacao equals td.CodTransacao
         into r11
         from r1 in r11.DefaultIfEmpty()
         join sp in dbcontext.ServicosPrestado
         on r1.CodServicoPrestado equals sp.CodServicosPrestado
         into r22
         from r2 in r22.DefaultIfEmpty()
         join s in dbContext.CodServico
         on r2.CodServico equals s.CodServico
         into r33 
         from r3 in r33.DefaultIfEmpty()
         select new {r1,r3})
         .GroupBy(x=>x.r3?.Nome)
         .Select(x=>new 
                    {
                      Total=x.Sum(z=>(z.r1==null?0:z.r1.Valor)),
                      Servico Prestado=x.Key
                    })
         .OrderByDescending(x=>x.Key)
         .ToList();
这里有一个按抛出错误分组求和的示例-哪个错误?此外,请尝试使用导航属性而不是联接。例如Transacao.Transacao。