2010-06-10 6 views
6

Wie kann ich das äußere Anwenden in LINQ erreichen? Ich habe ein kleines Problem.C# Äußeres Anwenden in LINQ

Hier ist die SQL-Abfrage, die ich verwende.

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 

Antwort

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() 
} 

Oder mit einem Verein:

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