WHERE IN / NOT IN (LINQ, Entity Framework) |
WHERE IN / NOT IN (LINQ, Entity Framework) ในหัวข้อนี้เราจะมารู้วิธีการใช้ WHERE IN และ NOT IN บน LINQ to Entities ซึ่งโดยปกติแล้วคำสั่งนี้เราสามารถใช้ OR แทนได้ แต่จะไม่นิยมเพราะการทำงานจะช้ากกว่า IN และ IN ยังสามารถประยุกต์ใช้ได้กับชุดข้อความที่เป็น Array และยังสามารถเอาค่า Result จาก LINQ ชุดที่ 1 ไปใช้ในยัง LINQ ชุดอื่น ๆ ได้อีกด้วย โดย Syntax ของ LINQ ที่เราใช้จะใช้ Contains
Example 1 : การใช้ Where In ด้วยค่าที่มาจาก Array
Code (C#)
01. private void frmMain_Load( object sender, EventArgs e)
02. {
03.
04. using (var db = new myDatabaseEntities())
05. {
06.
07. string [] arrCountryCode = new string [] { "TH" , "US" };
08.
09.
10. var ds = (from c in db.CUSTOMER
11. where arrCountryCode.Contains(c.COUNTRY_CODE)
12. select c).ToList();
13.
14.
15. if (ds.Count() > 0)
16. {
17. this .myDataGridView.DataSource = ds;
18. }
19. }
20. }
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 arrCountryCode As String () = New String () { "TH" , "US" }
06.
07.
08. Dim ds = (From c In db.CUSTOMER Where arrCountryCode.Contains(c.COUNTRY_CODE)
09. Select c).ToList()
10.
11.
12. If ds.Count() > 0 Then
13. Me .myDataGridView.DataSource = ds
14. End If
15. End Using
16. End Sub
Screenshot

Example 2 : การ Where In ของ Result จาก LINQ ที่หนึ่งไป LINQ ที่สอง
Code (C#)
01. private void frmMain_Load( object sender, EventArgs e)
02. {
03.
04. using (var db = new myDatabaseEntities())
05. {
06.
07.
08. var country = (from c in db.COUNTRY
09. where c.COUNTRY_CODE == "US" || c.COUNTRY_CODE == "TH"
10. select c.COUNTRY_CODE).Distinct();
11.
12.
13. var customer = (from c in db.CUSTOMER
14. where country.Contains(c.COUNTRY_CODE)
15. select c).ToList();
16.
17.
18. if (customer.Count() > 0)
19. {
20. this .myDataGridView.DataSource = customer;
21. }
22.
23. }
24. }
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.
06. Dim country = (From c In db.COUNTRY
07. Where c.COUNTRY_CODE = "US" Or c.COUNTRY_CODE = "TH"
08. Select c.COUNTRY_CODE).Distinct()
09.
10.
11. Dim customer = (From c In db.CUSTOMER
12. Where country.Contains(c.COUNTRY_CODE)
13. Select c).ToList()
14.
15.
16. If customer.Count() > 0 Then
17. Me .myDataGridView.DataSource = customer
18. End If
19. End Using
20. End Sub
Screenshot

ในกรณีที่ต้องการ NOT IN ให้ใช้เครื่องหมาย !
Code (C#)
1. where !country.Contains(c.COUNTRY_CODE)
Code (VB.net)
1. where Not country.Contains(c.COUNTRY_CODE)
Screenshot
|
|
Total Votes: 2Overall Rating: 4 / 5 |
|
 |
|
|
ช่วยกันสนับสนุนรักษาเว็บไซต์ความรู้แห่งนี้ไว้ด้วยการสนับสนุน Source Code 2.0 ของทีมงานไทยครีเอท
|
|
|
By : |
ThaiCreate.Com Team (บทความเป็นลิขสิทธิ์ของเว็บไทยครีเอทห้ามนำเผยแพร่ ณ เว็บไซต์อื่น ๆ) |
|
Score Rating : |
   |
|
|
Create/Update Date : |
2015-10-02 21:15:02 /
2017-03-24 23:05:51 |
|
Download : |
No files |
|
Sponsored Links / Related |
|
|
|
|
|
|