ในการขยายคำตอบไวยากรณ์ของนิพจน์เชนโดย 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 และตัวแทนจำหน่ายพร้อมกับเขตข้อมูลทั้งหมดของพวกเขา
จากนั้นเราสามารถใช้ฟิลด์จากบันทึกเหล่านั้นในขณะที่เรากรองและเลือกผลลัพธ์ดังตัวอย่างที่เหลือซึ่งใช้dc_d
เป็นชื่อสำหรับวัตถุนิรนามที่เราสร้างขึ้นซึ่งมีทั้ง DealerContact และ Dealer records เป็นคุณสมบัติ