WHERE Clause (LINQ, Entity Framework) |
WHERE Clause (LINQ, Entity Framework) ในการเขียน Query บน SQL Statement ปกติแล้วถ้าจะได้ค่าที่ต้องการเราจะใช้การ Where Clause ต่าง ๆ ตามที่ต้องการ ละใน LINQ to Entities เราก็จะใช้ Where เช่นเดียวกัน แต่บน LINQ to Entities เป็นมากกว่า SQL Statement ตรงที่ หลังจาก Where เราสามารถนำ Result ที่ได้มาใช้ได้ทันที หรือจะนำไปใช้แล้ว Where เพิ่มเติมด้วยเงื่อนไขอื่น ๆ ได้อีก
Example 1 : การ Select ข้อมูลทั้งหมด โดยไม่ได้ใช้การ Where
Code (C#)
private void frmMain_Load(object sender, EventArgs e)
{
// Create new entities Object
using (var db = new myDatabaseEntities())
{
// Get data from CUSTOMER
var ds = (from c in db.CUSTOMER
select c).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
Dim ds = (From c In db.CUSTOMER Select c).ToList()
' if found item rows
If ds.Count() > 0 Then
Me.myDataGridView.DataSource = ds
End If
End Using
End Sub
Screenshot
Example 2 : การใช้ Where ด้วย COUNTRY_CODE ที่เป็น String
Code (C#)
private void frmMain_Load(object sender, EventArgs e)
{
// Create new entities Object
using (var db = new myDatabaseEntities())
{
// Get data from CUSTOMER
var ds = (from c in db.CUSTOMER
where c.COUNTRY_CODE == "US"
select c).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
Dim ds = (From c In db.CUSTOMER Where
c.COUNTRY_CODE = "US" Select c).ToList()
' if found item rows
If ds.Count() > 0 Then
Me.myDataGridView.DataSource = ds
End If
End Using
End Sub
ในการใช้ Where สามารถแทรกได้ใน Statement ในที่ Select ได้เลย หรือในกรณีที่ต้องการเขียนเชื่อนไขต่าง ๆ สามารถ Select ออกมาทั้งหมดแล้วเอาลง List() ค่อยมา Where ทีหลังก็ได้ แต่ Performance ในการ Where ครั้งเดียวจะดีกว่าที่จะนำมา Where เพิ่มทีหลัง แต่ทั้งนี้ถ้าข้อมูลไม่เยอะมาก จะไม่เห็ฌนผลลัพธ์ความต่าง เพียงแต่ประโน์ที่ได้อาจจะแตกต่างกัน เช่น เราอาจจะทำการ Select มาทั้งหมดก่อน นำค่าไปใช้ในส่วนต่าง ๆ ส่วน Where เพิ่มนั้นค่อยดูว่าจะเขียนเงื่อนไขไปทำอะไรเพิ่มเติม แต่ถึงอย่างไรการงำานในรูปแบบนี้จะมีการ Connection กับ Database เพียงครั้งเดียวเท่านั้น เพราะทุกอย่างจะถูกจับยัดลงใน List() เรียบร้อยแล้ว
Code (C#)
private void frmMain_Load(object sender, EventArgs e)
{
// Create new entities Object
using (var db = new myDatabaseEntities())
{
// Get data from CUSTOMER
var ds = (from c in db.CUSTOMER
select c).ToList();
// Where Condition
ds = ds.Where(o => (o.COUNTRY_CODE == "US")).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
Dim ds = (From c In db.CUSTOMER Select c).ToList()
' Where Condition
ds = ds.Where(Function(o) (o.COUNTRY_CODE = "US")).ToList()
' if found item rows
If ds.Count() > 0 Then
Me.myDataGridView.DataSource = ds
End If
End Using
End Sub
Screenshot
Example 2 : การใช้ Where ด้วย USED ที่เป็นค่าตัวเลข Number
Code (C#)
private void frmMain_Load(object sender, EventArgs e)
{
// Create new entities Object
using (var db = new myDatabaseEntities())
{
// Get data from CUSTOMER
var ds = (from c in db.CUSTOMER
where c.USED > 500000
select c).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
Dim ds = (From c In db.CUSTOMER
Where c.USED > 500000 Select c).ToList()
' if found item rows
If ds.Count() > 0 Then
Me.myDataGridView.DataSource = ds
End If
End Using
End Sub
Screenshot
Example 4 : การ Select และ Where มากกว่า 1 เงื่อนไข เช่น 2 เงื่อนไข
Code (C#)
private void frmMain_Load(object sender, EventArgs e)
{
// Create new entities Object
using (var db = new myDatabaseEntities())
{
// Get data from CUSTOMER
var ds = (from c in db.CUSTOMER
where c.USED > 500000 && c.COUNTRY_CODE == "TH"
select c).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
Dim ds = (From c In db.CUSTOMER
Where c.USED > 500000 And c.COUNTRY_CODE = "TH"
Select c).ToList()
' if found item rows
If ds.Count() > 0 Then
Me.myDataGridView.DataSource = ds
End If
End Using
End Sub
Screenshot
Note!!
เนื่องจาก Entity Framework ต้องใช้รูปแบบ Syntax ของ LINQ ในการเขียนด้วยภาษาVB.Net หรือ C# ซึ่งในกรณีที่ซับซ้อนมาเกินการเขียนบน Syntax LINQ เพื่อให้ Entities ทำงานได้ตรงกับความต้องการนั้นค่อนข้างจะยากพอสมควร ฉะนั้นหลาย ๆ คำสั่งอาจจะต้องอาศัยการสร้างการเขียน Query บน VIEW Table หรือ Stored Procedure เข้ามาทำงานแทน จะทำงานได้รวดเร็วกกว่าการจัดการที่ Entities
|
ช่วยกันสนับสนุนรักษาเว็บไซต์ความรู้แห่งนี้ไว้ด้วยการสนับสนุน Source Code 2.0 ของทีมงานไทยครีเอท
|
|
|
By : |
ThaiCreate.Com Team (บทความเป็นลิขสิทธิ์ของเว็บไทยครีเอทห้ามนำเผยแพร่ ณ เว็บไซต์อื่น ๆ) |
|
Score Rating : |
|
|
|
Create/Update Date : |
2015-10-02 21:14:27 /
2017-03-24 23:02:21 |
|
Download : |
No files |
|
Sponsored Links / Related |
|
|
|
|
|
|
|