我有这个SQL代码:
select A.Recurso_Id, sum(case when B.cita_id is null then 0 else 1 end) as Total_Eventos, a.Recurso_Nombre, a.Recurso_Email,a.Recurso_Activo
from Agenda_Recurso a left join Agenda_Cita B
on A.Recurso_Id=B.Recurso_Id
where B.Cita_Fecha_Final > getdate()
group by A.Recurso_Id, a.Recurso_Nombre, a.Recurso_Email, a.Recurso_Activo
而且,我需要转向LINQ,实际上我有这个代码:
public List<Recurso> Cantidad_Eventos_Recurso(string pConexion, long pEmpresa, long pSucursal)
{
DateTime dt = DateTime.Now;
List<TRegAgendaCita> _LstCitas = MetodosEnLinea.Catalogo.AgendaEvento_Lista(pConexion, pSucursal);
List<TRegAgendaRecurso> _LstRecursos = MetodosEnLinea.Catalogo.AgendaRecurso_Lista(pConexion, pEmpresa);
if (_LstCitas == null)
return null;
List<Recurso> _ListaSelect = (from Recursos in _LstRecursos
join Citas in _LstCitas on Recursos.Id equals Citas.Recurso_Id
where Citas.Fecha_Final > dt
into cleft
select new Recurso()
{
Cantidad_Eventos = cleft.Where(x => x.Recurso_Id == Recursos.Id).Count(),
Nombre = Recursos.Nombre,
Email = Recursos.Email,
Activo = Recursos.Activo,
Id = Recursos.Id
})
.ToList();
return _ListaSelect;
}
但是,在我想要购买今天的最后日期的部分中,他告诉我他错了,他说:查询正文必须以select子句或group子句结束。有人可以帮帮我吗?
答案 0 :(得分:1)
查询的语法应如下所示:
from Recursos in _LstRecursos
join Citas in _LstCitas.Where(c => c.Fecha_Final > dt) // notice the where moved here
on Recursos.Id equals Citas.Recurso_Id
into cleft
select new Recurso()
{
Cantidad_Eventos = cleft.Where(x => x.Recurso_Id == Recursos.Id).Count(),
Nombre = Recursos.Nombre,
Email = Recursos.Email,
Activo = Recursos.Activo,
Id = Recursos.Id
}
您不能在into
之后在查询语法中放置where
子句。如果你想要查询语法,你可以使用它,这有点冗长:
from Recursos in _LstRecursos
join Citas in
from c in _LstCitas
where c.Fecha_Final > dt
select c
on Recursos.Id equals Citas.Recurso_Id
into cleft
select new Recurso()
{
Cantidad_Eventos = cleft.Where(x => x.Recurso_Id == Recursos.Id).Count(),
Nombre = Recursos.Nombre,
Email = Recursos.Email,
Activo = Recursos.Activo,
Id = Recursos.Id
}