במאמר זה נסקור את המתודולוגיה החדשה הנקראת Linq to Sql ונענה על השאלות: איך Linq ממומש ברמת הCLR? מהם המרכיבים המרכזיים בטכנולוגיה? ואיך ניתן לממש תשאול דינאמי בזמן ריצה (Runtime)? כל זה מלווה בדוגמאות קוד עם הסברים.
מה זה Linq?
מתודולוגיית Linq נוספה לNet. בגרסתה ה3.5, ומהווה מקבץ ביטויים לתשאול טיפוסים דמויי מערכים, או בעברית פשוטה – Linq יכול לתשאל כל טיפוס שמממש את הממשק IEnumerable. בנוסף חשוב לציין שעיקר התועלת במתודולוגיית Linq היא צורת הביטויים (Syntax) שמאפשרת לנו פשוט לציין מה אנחנו רוצים לעשות במקום להתמקד בדרך להגיע אל התוצאה הרצויה, נביא דוגמה:
Dim arr As IEnumerable(Of Integer) = New Integer() {0, 1, 2, 3, 4, 99}
Function WithoutLinq() As IEnumerable(Of Integer)
Dim out = New List(Of Integer)
For Each itm In arr
If itm > 2 And itm < 10 Then
out.Add(itm)
End If
Next
Return out
End Function
Function UsingLinq() As IEnumerable(Of Integer)
Return (From p In arr Where p > 2 And p < 10)
End Function
בדוגמה שני פונקציות שמחזירות את כל המספרים שגדולים מ2 וקטנים מ10 מתוך המערך arr שמוכרז בתחילת הדוגמה. ההבדל היחיד ביניהם הוא בצורת הכתיבה. בפונקציה WithoutLinq אנו מבצעים את הסינון ללא שימוש בLinq ולכן נאלצים לכתוב הרבה קוד שלא מעניין אותנו בכלל, כמו לולאת For Each או לולאת מונה וכדומה. להבדיל, בפונקציה UsingLinq, אני מקבל את אותה התוצאה ע"י שאני פשוט כותב "תוציא את כל האיברים שמתקיים בהם התנאי X" וLinq דואג לכל השאר.
בנוסף, Linq מהווה יסוד למספר טכנולוגיות נוספות כגון Linq to Sql. עוד...