- Published on
EF Core 10 มี Left Join แล้ว!

LEFT JOIN
เรียกได้ว่าเป็นเรื่องปกติในการ query ข้อมูลแต่กลับไม่เคยมีใน EF เลย ตั้งเริ่มจนปัจจุบัน แต่ใน EF Core 10 ได้ใส่ LeftJoin
มาให้แล้ว!!! (นานไปมั้ย) ซึ่งแต่ก่อนเวลาที่ต้ต้องเขียน LEFT JOIN
ต้องใช้ GroupJoin, SelectMany และ DefaultIfEmpty ทำให้การเขียนและอ่านยากมาก
LINQ มีประโยชน์ยังไง มาดู - 10 LINQ ที่นักพัฒนา C# ทุกคนต้องรู้
ก่อนหน้าที่จะมี LeftJoin
ใน EF Core 10 การเขียน LEFT JOIN
ใน LINQ ต้องใช้เทคนิคหลายขั้นตอนร่วมกัน ซึ่งมักทำให้โค้ดยาวและอ่านยาก
var query = students
.GroupJoin(
departments,
student => student.DepartmentID,
department => department.ID,
(student, departmentList) => new { student, subgroup = departmentList })
.SelectMany(
joinedSet => joinedSet.subgroup.DefaultIfEmpty(),
(student, department) => new
{
student.student.FirstName,
student.student.LastName,
Department = department != null ? department.Name : "[NONE]"
});
ในตัวอย่างนี้ เราต้อง:
- ใช้
GroupJoin
เพื่อจับคู่ข้อมูลจากตารางstudents
กับdepartments
- จากนั้นใช้
SelectMany
กับDefaultIfEmpty
เพื่อจัดการกับข้อมูลที่ไม่มีคู่ตรงกัน (ซึ่งเป็นลักษณะของ LEFT JOIN)
การเขียนในลักษณะนี้ทำให้เกิดโค้ดที่ซับซ้อน
LeftJoin
ใน EF Core 10 สามารถเขียน LEFT JOIN
ใน LINQ ได้ง่ายขึ้นและตรงไปตรงมา เพียงแค่ใช้เมธอด LeftJoin
แล้วระบุ key selector และผลลัพธ์ที่ต้องการ
var query = students
.LeftJoin(
departments,
student => student.DepartmentID,
department => department.ID,
(student, department) => new
{
student.FirstName,
student.LastName,
Department = department?.Name ?? "[NONE]"
});
✨ข้อดีของการใช้ LeftJoin
- อ่านง่ายขึ้น: โค้ดดูสั้นและเข้าใจง่าย ไม่ต้องใช้หลายเมธอดพร้อมกัน
- ลดความซับซ้อน: โค้ดที่ได้มีความกระชับ ทำให้ดูแลและแก้ไขได้ง่ายในอนาคต
- รองรับใน EF Core: EF Core สามารถรู้จักและแปลความหมายของ LeftJoin ได้อย่างถูกต้อง โดยที่ไม่ต้องเขียน
LEFT JOIN
ในรูปแบบ SQL
เขียนโค้ดให้สนุกนะครับ 😊