2016-04-07 9 views
0

Ich weiß, es gibt viele ähnliche Anfragen aus der Umgebung geschrieben, aber ich würde gerne wissen, wie können wir die folgenden SQL-Abfrage in Entity Framework,Entity Framework - Die letzten Datensatz in der LEFT JOIN

select * from RequestDetail d 
    left join (select RequestDetailId, Max(RequestedOn) RequestedOn from RequestHistory group by RequestDetailId) as h 
    on h.RequestDetailId = d.Id 

lesen schreiben viel Post und ich nicht in der Lage, genaue Replik zu finden.

Antwort

1

Sie können das gleiche in Linq to Entities tun:

var innerquery=from e in RequestHistory 
       group e by e.RequestDetailId into g 
       select new { 
          RequestDetailId=g.Key, 
          RequestedOn =g.Max(r=>r.RequestedOn) 
          }; 

var query= from d in RequestDetail 
      join h in innerquery on d.Id equals h.RequestDetailId into gj 
      from e in gj.DefaultIfEmpty() 
      select new {d, e}; 

ich die innere Abfrage zuerst erstellt haben, zu helfen, besser zu verstehen, wie es zu tun, aber Sie können beide Abfragen in einer Einheit verschmelzen, aber das doesn mache keinen Unterschied.

+0

Gern geschehen;) – octavioccl