2010-06-10 9 views
6

Come posso ottenere Outer Apply in LINQ? Sto avendo un po 'di problemi.C# Outer Applicare in LINQ

Ecco la query SQL che sto utilizzando.

SELECT u.masterID 
     ,u.user 
     ,h.created 
FROM dbo.Users u 
OUTER APPLY (SELECT TOP 1 * FROM UserHistory h where h.masterID = u.masterID ORDER BY created DESC) h 

risposta

3
from u in Users 
join UserHistory on u.masterID equals h.masterID into h 
select new {u.masterID, u.user, h.created.OrderByDescending().First()} 
12
from u in Users 
join UserHistory on u.masterID equals h.masterID into h 
select new { 
    u.masterID, 
    u.user, 
    Created = h.Select(x => x.created).OrderByDescending(c => c).FirstOrDefault() 
} 

Oppure, con un'associazione:

from u in Users 
let created = u.UserHistories.Select(x => x.created).OrderByDescending(c => c).FirstOrDefault() 
select new 
{ 
    u.masterID, 
    u.user, 
    Created = created 
}