Left Join (LINQ, Entity Framework) |
Left Join (LINQ, Entity Framework) ในการ Join ข้อมูลในรูปแบบปกติ Table ทั้ง 2 ที่จะ Join เข้าหากันนั้นจะต้องมีข้อมูลทั้ง 2 ฝั่งถึงจะแสดงข้อมูลนั้นออกมา แต่ในกรณีที่ใช้ Left Join นั่นหมายถึงว่าให้คำนึงถึงข้อมูลของ Table ทางด้านซ้ายเป็นหลัก ส่วน Table ที่มา Join อีกตารางนั้นจะไม่มีหรือมีข้อมูลก็ได้ ซึ่งจะแสดงรายการเป็นค่าว่างในกรณีที่ไม่มีข้อมูล

Table สมมุติกรณีที่มีข้อมูล เฉพาะใน Table ด้านซ้าย และด้านขวา ตัวที่ Join จะไม่มีข้อมูล
Left Join Syntax (C#)
1. var ds = (from c in db.TABLE1
2. join d in db.TABLE2 on c.COL equals d.COL into d2
3. from f in d2.DefaultIfEmpty()
4. select c).ToList();
Left Join Syntax (VB.Net)
1. Dim ds = (From c In db.TABLE1
2. Group Join d In db.TABLE2 On c.COL Equals d.COL Into Group
3. From f In Group.DefaultIfEmpty()
4. Select c).ToList()
Example 1 : การ Join ข้อมูลด้วยรูปแบบปกติ
Code (C#)
01. private void frmMain_Load( object sender, EventArgs e)
02. {
03.
04. using (var db = new myDatabaseEntities())
05. {
06.
07. var ds = (from c in db.CUSTOMER
08. join d in db.COUNTRY on c.COUNTRY_CODE equals d.COUNTRY_CODE
09. select new
10. {
11. CusID = c.CUSTOMER_ID,
12. CusName = c.NAME,
13. CountryName = d.COUNTRY_NAME
14. }).ToList();
15.
16.
17. if (ds.Count() > 0)
18. {
19. this .myDataGridView.DataSource = ds;
20. }
21. }
22. }
Code (VB.Net)
01. Private Sub frmMain_Load(sender As Object , e As EventArgs) Handles MyBase .Load
02.
03. Using db = New myDatabaseEntities()
04.
05. Dim ds = (From c In db.CUSTOMER
06. Join d In db.COUNTRY On c.COUNTRY_CODE Equals d.COUNTRY_CODE
07. Select New With { _
08. .CusID = c.CUSTOMER_ID, _
09. .CusName = c.NAME, _
10. .CountryName = d.COUNTRY_NAME _
11. }).ToList()
12.
13.
14. If ds.Count() > 0 Then
15. Me .myDataGridView.DataSource = ds
16. End If
17. End Using
18. End Sub
Screenshot

จากตัวอย่างที่ 1 จะเห็นว่าข้อมูลหายไป 1 รายการ ฉะนั้นการใช้ Left Join ที่ถูกต้องต้องใช้เหมือนกับตัวอย่างที่ 2
Example 2 : การ Left Join ข้อมูล โดยคำนึงถึงข้อมูลทางด้านซ้ายเป็นหลัก
Code (C#)
01. private void frmMain_Load( object sender, EventArgs e)
02. {
03.
04. using (var db = new myDatabaseEntities())
05. {
06.
07. var ds = (from c in db.CUSTOMER
08. join d in db.COUNTRY on c.COUNTRY_CODE equals d.COUNTRY_CODE into d2
09. from f in d2.DefaultIfEmpty()
10. select new
11. {
12. CusID = c.CUSTOMER_ID,
13. CusName = c.NAME,
14. CountryName = (f.COUNTRY_NAME == null ? "-" : f.COUNTRY_NAME),
15. }).ToList();
16.
17.
18. if (ds.Count() > 0)
19. {
20. this .myDataGridView.DataSource = ds;
21. }
22. }
23. }
Code (VB.Net)
01. Private Sub frmMain_Load(sender As Object , e As EventArgs) Handles MyBase .Load
02.
03. Using db = New myDatabaseEntities()
04.
05. Dim ds = (From c In db.CUSTOMER
06. Group Join d In db.COUNTRY On c.COUNTRY_CODE Equals d.COUNTRY_CODE Into Group
07. From f In Group.DefaultIfEmpty() _
08. Select New With { _
09. .CusID = c.CUSTOMER_ID, _
10. .CusName = c.NAME, _
11. .CountryName = ( If (f.COUNTRY_NAME Is Nothing , "-" , f.COUNTRY_NAME)) _
12. }).ToList()
13.
14. If ds.Count() > 0 Then
15. Me .myDataGridView.DataSource = ds
16. End If
17. End Using
18. End Sub
Screenshot

|
ช่วยกันสนับสนุนรักษาเว็บไซต์ความรู้แห่งนี้ไว้ด้วยการสนับสนุน Source Code 2.0 ของทีมงานไทยครีเอท
|
|
|
By : |
ThaiCreate.Com Team (บทความเป็นลิขสิทธิ์ของเว็บไทยครีเอทห้ามนำเผยแพร่ ณ เว็บไซต์อื่น ๆ) |
|
Score Rating : |
   |
|
|
Create/Update Date : |
2015-10-02 21:16:40 /
2017-03-24 23:07:26 |
|
Download : |
No files |
|
Sponsored Links / Related |
|
|
|
|
|
|