Join Clause (LINQ, Entity Framework) |
Join Clause (LINQ, Entity Framework) การ JOIN ข้อมูลด้วย Query เป็นหัวใจของการเขียนโปรแกรมด้วยการ Query ข้อมูลที่มีความสัมพันธ์เชื่อมโยงกัน ให้ Result ที่ได้นั้นตรงกับความต้องการ และบน LINQ to Entities ก็มีคำสั่งการ JOIN ข้อมูลเดียวเช่นกันกับบน SQL Statement โดยรูปแบบนั้นง่าย ๆ ไม่มีอะไรซับซ้อน สามารถใช้การ JOIN ตั้งแต่ 2 Table หรือมากกว่านั้น
Join Syntax (C#)
var ds = (from c in db.TABLE1
join d in db.TABLE2 on c.COL equals d.COL
select c).ToList();
Join Syntax (VB.Net)
Dim ds = (From c In db.TABLE1
Join d In db.TABLE2 On c.COL Equals d.COL
Select c).ToList()
Example 1 : การ Join ข้อมูลแบบ 2 Table ด้วย Column เดียว แบบง่าย ๆ
Code (C#)
private void frmMain_Load(object sender, EventArgs e)
{
// Create new entities Object
using (var db = new myDatabaseEntities())
{
// Get data from CUSTOMER and join COUNTRY
var ds = (from c in db.CUSTOMER
join d in db.COUNTRY on c.COUNTRY_CODE equals d.COUNTRY_CODE
select new
{
CusID = c.CUSTOMER_ID,
CusName = c.NAME,
CountryName = d.COUNTRY_NAME
}).ToList();
// if found item rows
if (ds.Count() > 0)
{
this.myDataGridView.DataSource = ds;
}
}
}
Code (VB.Net)
Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' Create new entities Object
Using db = New myDatabaseEntities()
' Get data from CUSTOMER and join COUNTRY
Dim ds = (From c In db.CUSTOMER
Join d In db.COUNTRY On c.COUNTRY_CODE Equals d.COUNTRY_CODE
Select New With { _
.CusID = c.CUSTOMER_ID, _
.CusName = c.NAME, _
.CountryName = d.COUNTRY_NAME _
}).ToList()
' if found item rows
If ds.Count() > 0 Then
Me.myDataGridView.DataSource = ds
End If
End Using
End Sub
Screenshot
Example 2 : การ Join ข้อมูลด้วยหลาย Column
Syntax
on new { c.COL1, c.COL2} equals new { d.COL1, .COL2}
Code (C#)
var ds = (from c in db.TABLE1
join d in db.TABLE2 on new { c.XXX, c.YYY } equals new { d.XXX, YYY = d.ZZZ }
select c).ToList();
Code (VB.Net)
Dim ds = (From c In db.TABLE1
Join d In db.TABLE2 On New With {c.XXX, c.YYY} Equals New With {d.XXX, .YYY = d.ZZZ}
Select c).ToList()
คำอธิบาย
ในการ JOIN ข้อมูลตั้งแต่ 2 Column ขึ้นไป ในกรณีที่ EntitySet ตัว Column ชื่อไม่เหมือนกัน จะต้องทำการแทนที่ชื่อ Column ให้ถูกต้องก่อนที่จะ JOIN
Example 3 : การ Join มากกว่า 2 Table หรือ 3 Table ขึ้นไป
Code (C#)
var ds = (from c in db.TABLE1
join d in db.TABLE2 on c.COL equals d.COL
join e in db.TABLE2 on d.COL equals e.COL
select c).ToList();
Code (VB.Net)
Dim ds = (From c In db.TABLE1
Join d In db.TABLE2 On c.COL Equals d.COL
Join e In db.TABLE2 On d.COL Equals e.COL
Select c).ToList()
ในการ JOIN ตั้งแต่ 3 Table ขึ้นไปก็ใช้หลักการเดียวกับ JOIN ตัว 2 Table เพียงแต่เพิ่มขึ้นมาอีก 1 Table หรือจะอีกหลาย Table
.
|
ช่วยกันสนับสนุนรักษาเว็บไซต์ความรู้แห่งนี้ไว้ด้วยการสนับสนุน Source Code 2.0 ของทีมงานไทยครีเอท
|
|
|
By : |
ThaiCreate.Com Team (บทความเป็นลิขสิทธิ์ของเว็บไทยครีเอทห้ามนำเผยแพร่ ณ เว็บไซต์อื่น ๆ) |
|
Score Rating : |
|
|
|
Create/Update Date : |
2015-10-02 21:16:27 /
2017-03-24 23:06:18 |
|
Download : |
No files |
|
Sponsored Links / Related |
|
|
|
|
|