Щоб розширити відповідь на синтаксис ланцюга вираження Clever Human:
Якщо ви хотіли робити такі дії (як фільтрувати або вибирати) на полях з обох таблиць, що об'єднуються разом - замість лише однієї з цих двох таблиць - ви можете створити новий об'єкт у лямбда-виразі остаточного параметра методу приєднання включаючи обидві ці таблиці, наприклад:
var dealerInfo = DealerContact.Join(Dealer,
dc => dc.DealerId,
d => d.DealerId,
(dc, d) => new { DealerContact = dc, Dealer = d })
.Where(dc_d => dc_d.Dealer.FirstName == "Glenn"
&& dc_d.DealerContact.City == "Chicago")
.Select(dc_d => new {
dc_d.Dealer.DealerID,
dc_d.Dealer.FirstName,
dc_d.Dealer.LastName,
dc_d.DealerContact.City,
dc_d.DealerContact.State });
Цікава частина - це лямбда-вираз у рядку 4 цього прикладу:
(dc, d) => new { DealerContact = dc, Dealer = d }
... де ми створюємо новий об'єкт анонімного типу, який має властивості записів DealerContact та Dealer, а також усіх їхніх полів.
Потім ми можемо використовувати поля з цих записів, коли ми фільтруємо та відбираємо результати, як це демонструє решта прикладу, який використовує dc_d
як ім’я для створеного нами анонімного об'єкта, який має як властивості записів DealerContact, так і дилерів.