问题
Consider this LINQ expression written using query notation:
List<Person> pr = (from p in db.Persons
join e in db.PersonExceptions
on p.ID equals e.PersonID
where e.CreatedOn >= fromDate
orderby e.CreatedOn descending
select p)
.ToList();
Question: how would you write this LINQ expression using dot notation?
回答1:
Like this:
List<Person> pr = db.Persons
.Join(db.PersonExceptions,
p => p.ID,
e => e.PersonID,
(p, e) => new { p, e })
.Where(z => z.e.CreatedOn >= fromDate)
.OrderByDescending(z => z.e.CreatedOn)
.Select(z => z.p)
.ToList();
Note how a new anonymous type is introduced to carry both the p
and e
bits forward. In the specification, query operators which do this use transparent identifiers to indicate the behaviour.
来源:https://stackoverflow.com/questions/1511833/linq-dot-notation-equivalent-for-join