Consider this LINQ expression written using query notation:
List pr = (from p in db.Persons
join e in db.PersonExceptions
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.