משתמש:Kdaniel/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 Objects, LINQ to XML, LINQ to DataSets וLINQ to SQL.


LINQ to Objects עריכה

LINQ to Objects מאפשר תישאול של טיפוסים דמויי מערכים, ויישים על כל טיפוס שמממש את הממשק IEnumerable

LINQ to XML עריכה

LINQ to XML הופך תוכן XML לעץ של XElement ומתשאל אותם.

LINQ to SQL עריכה

LINQ to SQL הוא בעצם ORM תואם Linq. ע"י שימוש בטיפוסים מסוג IQueryable ו(IQueryable(Of T הג'נרי, LINQ to SQL מאפשר לתשאל מסדי נתונים תוך שמירה על תאימות טיפוסים (type safe) כמקובל בסביבת NET.

LINQ to DataSets עריכה

היות וLINQ to SQL תומך רק במסדי נתונים מסוג Microsoft SQL Server, כדי לתמוך גם בADO.NET נכלל בLinq גם LINQ to Dataset שעובד מול Datasets שתומכים ברשימה ארוכה של מסדי נתונים.


קישורים חיצוניים עריכה