Подтвердить что ты не робот

LINQ: эквивалент нотации для JOIN

Рассмотрим это выражение LINQ, написанное с использованием нотации запроса:

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

Вопрос: как вы могли бы написать это выражение LINQ с помощью точечной нотации?

4b9b3361

Ответ 1

Вот так:

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

Обратите внимание, как вводится новый анонимный тип для переноса битов p и e вперед. В спецификации оператора запроса, которые используют это, используют прозрачные идентификаторы для указания поведения.