如何将 SQL 子查询转换为 Linq?

How to Translate SQL Subquery to Linq?

我需要将此查询转换为 Linq

SELECT m.Nombre, m.LugarSalida, m.FechaHorarioComienzo
FROM Maraton m 
WHERE m.FechaHorarioComienzo >= GETDATE()
  AND (m.MaxParticipantes + m.ParticipantesEnEspera) >
   (SELECT COUNT(*) as "Total de participantes"
    FROM ResultadoMaratonParticipante rm
    where rm.IdMaraton = m.IdMaraton
    GROUP BY rm.IdMaraton)

这包含一个子查询,我该怎么做?

谢谢!

注意:完整代码是下一个

PW3_20152C_TP2_MaratonesEntities3 上下文 = 新 PW3_20152C_TP2_MaratonesEntities3();

    //Obtengo el listado de maratones
    DateTime hoy = DateTime.Now;
    List<Maraton> qm = (from m in context.Maraton
                       where m.FechaHorarioComienzo >= DateTime.Now
                         && (m.MaxParticipantes + m.ParticipantesEnEspera) >
                           (from rm in context.ResultadoMaratonParticipante
                            where rm.IdMaraton = m.IdMaraton // Cannot convert query expression to intended delegate type because some of the return types in the block are not implicitly convertible to the delegate return type  TPFinalWeb3 

                            select rm).Count()
                       select m).ToList();

并排

SQL

SELECT m.Nombre, m.LugarSalida, m.FechaHorarioComienzo
FROM Maraton m 
WHERE m.FechaHorarioComienzo >= GETDATE()
  AND (m.MaxParticipantes + m.ParticipantesEnEspera) >
   (SELECT COUNT(*) as "Total de participantes"
    FROM ResultadoMaratonParticipante rm
    where rm.IdMaraton = m.IdMaraton)

LINQ

from m in db.Maraton
where m.FechaHorarioComienzo >= DateTime.Now
  && (m.MaxParticipantes + m.ParticipantesEnEspera) >
    (from rm in db.ResultadoMaratonParticipante
     where rm.IdMaraton == m.IdMaraton
     select rm).Count()
select new { m.Nombre, m.LugarSalida, m.FechaHorarioComienzo }