Clever Human'ın ifade zinciri sözdizimi yanıtını genişletmek için :
Her iki tablonun birleştirildiği alanlarda (filtre veya seçme gibi) bir şeyler yapmak istiyorsanız - bunun yerine bu iki tablodan sadece birinde - Join yönteminin son parametresinin lambda ifadesinde yeni bir nesne oluşturabilirsiniz bu tabloların her ikisini de içeren, örneğin:
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 });
İlginç olan kısım, bu örneğin 4. satırındaki lambda ifadesidir:
(dc, d) => new { DealerContact = dc, Dealer = d }
... burada tüm alanlarıyla birlikte DealerContact ve Dealer kayıtlarının özelliklerine sahip yeni bir anonim tip nesne inşa ediyoruz.
Daha sonra, örneklerin geri kalanında gösterildiği dc_d
gibi, hem DealerContact hem de Dealer kayıtlarını özellikleri olarak oluşturduğumuz anonim nesne için bir ad olarak kullanan sonuçları filtreler ve seçerken bu kayıtlardaki alanları kullanabiliriz .