¿Cómo escribo este SQL en LINQ Entity Framework 4
-
15-10-2019 - |
Pregunta
select C.CenterID
from dbo.Center C
inner join (select PersonID, max(EffectiveDate) as EffectiveDate
from Center
where EffectiveDate <= getdate()
group by PersonID) as C2
on C.PersonID= C2.PersonID
and C.EffectiveDate = C2.EffectiveDate
Centro de mesa tiene un PersonaID y EFFECTIVEDATE, múltiples registros tienen el mismo PersonaID, pero diferentes EffectiveDates, estoy tratando de devolver el 1 registro más actual para cada PersonaID
Lo ideal es que quiero expresar esto en LINQ como IQueryable para que pueda utilizarlo para construir consultas más grandes.
Solución
var q = from c in oc.Center
join c2 in (
from ci in oc.Center
where ci.EffectiveDate <= DateTime.Now
group ci by ci.PersonID into cig
select new { PersonID = cig.Key, EffectiveDate = cig.Max(ed => ed.EffectiveDate) }
) on new { c.PersonID, c.EffectiveDate } equals { c2.PersonID, c2.EffectiveDate }
select c.CenterID
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow