สวัสดีครับ วันนี้มีโอกาสเลยเข้ามาเยี่ยม hosxp บังเอิญเห็นกระทู้นี้เลยขอต่อยอดนิดหนึ่งครับ พูดถึง VS2008 ก็มีอะไรที่สนใจมากครับ แต่ไฮไลท์ของเวอร์ชั่นนี้คงนี้ไม่พ้น LINQ ผมเองได้มีโอกาสศึกษามาบ้างก็พอทำให้รู้ว่า LINQ ช่วยให้การเขียนโปรแกรมแบบ OOP สะดวกมายิ่งขึ้น แต่เดิมที่เราจะเอา class ไปชนกับ DB นั้นเราไม่สามารถทำแบบ OOP ได้เต็มที่เนื่องจากโครงสร้างที่แตกต่างกัน จึงได้เกิดเครื่องมือประเภท O/R mapping ขึ้นมา อย่างที่เคยเห็นมาก่อนหลายตัว เช่น Hibernate (ผมอ่าน NHibernate เท่าไรก็ไม่เข้าใจสักทีครับ) จนมาถึง LINQ
ส่วนประกอบของ LINQ ในการทำงานนั้น จะแยกออกเป็นขั้นต่าง ๆ ครับได้แก่ Programming Lang <> LINQ Provider <> DB ซึ่ง LINQ Provider นี้ประกอบด้วยส่วนหลัก ๆ ได้แก่ LINQ to Objects , LINQ to XML , LINQ to SQL (ตามสไตล์ MS ครับ ต้องสนับสนุนผลิตภัณฑ์ของตัวเองเป็นหลัก เหมือน ADO.NET เลย) , LINQ to dataset , LINQ to Entities (อันนี้น่าสนครับ คือ ถ้าใครได้ไปอ่าน enterprise pattern ของ MS เขาจะแนะนำเกี่ยวกับการเขียนโปรแกรมแบบ 4 tier = front + mid + dac + entities ด้วย ซึ่งเจ้า entities tier จะเป็นอะไรที่นักพัฒนาหลาย ๆ คนไม่ค่อยคุ้น ว่าง่าย ๆ คือการแยก property ออกจาก mid tier ให้ทำหน้าที่เป็น data carries โดยให้ mid tier เก็บแต่ method ไว้เท่านั้น)
ที่นี้มาลองดูตัวอย่างการใช้งาน LINQ แบบง่ายๆ สักตัวอย่างนะครับ เป็นตัวอย่างของ LINQ to Object
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim Drugs As String() = {"Paracetamol", "Amoxycillin", "Dicloxacillin", "Loratadine", "Bromhexine"}
Dim SomeDrug = From Drug In Drugs Where Drug.Length > 5 Select Drug
For Each drug In SomeDrug
MsgBox(drug, MsgBoxStyle.OkOnly + MsgBoxStyle.Information)
Next
End Sub
End Class
ผลที่ได้ครับ
ลองไปศึกษาดูนะครับ เสียดายที่ตำราภาษาไทยไม่มีใครเขียนเรื่องนี้แบบละเอียด ๆ เหมือนตำราของฝรั่ง อาจด้วยคนไทยไม่ค่อยรักการอ่านเท่าไร ส่วนผมตอนนี้ขอกอด VS2005 ต่อไปอีกสักปีก่อนครับ รอให้ 3rd component ที่ใช้อยู่ออกมาสนับสนุน .NET 3.5 ก่อน แล้วค่อยเปลี่ยน
ขอตัวก่อนนะครับ สวัสดีครับ