2017-09-27 118 views
0

我有這樣的SQL代碼:LINQ - 其中,集團總

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子句結束。有人可以幫助我嗎?

回答

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 
} 
+0

我非常感謝你,它完美的作品 – Broodwing009