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]"
});
Code language: PHP (php)
ในตัวอย่างนี้ เราต้อง:
- ใช้
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]"
});
Code language: PHP (php)
✨ข้อดีของการใช้ LeftJoin
- อ่านง่ายขึ้น: โค้ดดูสั้นและเข้าใจง่าย ไม่ต้องใช้หลายเมธอดพร้อมกัน
- ลดความซับซ้อน: โค้ดที่ได้มีความกระชับ ทำให้ดูแลและแก้ไขได้ง่ายในอนาคต
- รองรับใน EF Core: EF Core สามารถรู้จักและแปลความหมายของ LeftJoin ได้อย่างถูกต้อง โดยที่ไม่ต้องเขียน
LEFT JOIN
ในรูปแบบ SQL
เขียนโค้ดให้สนุกนะครับ 😊