پیوند در LINQ
LINQ همچنین از unioning داده ها از مجموعه های مختلف پشتیبانی میکند. (چیزی شبیه به join در SQL)
برای مثال : در داده هایی که ما تا کنون از آن ها پرس و جو تهیه کردیم تنها قادر بودند ژانر فیلم ها به صورت کد عددیشان نشان دهند. به وسیله "پیوند" میتوانیم در خروجی نام هر ژانر را به جای کد عددیشان نمایش دهیم.
چنین کاری در LINQ به راحتی امکانپذیر است.
برای انجام چنین کاری یک کلاس با نام Genre ایجاد خواهیم کرد.
مثال 13 : کلاس ژانر
کد های VB.NET
Public Class Genre
Private _id As Integer
Private _name As String
Public Property ID() As Integer
Get
Return _id
End Get
Set(ByVal value As Integer)
_id = value
End Set
End Property
Public Property Name() As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property
End Class
کد های C#
public class Genre
{
public int ID { get; set; }
public string Name { get; set; }
}
حالا شما باید متد GetGenres را به کد هایتان اضافه کنید تا لیست ژانر ها را برگرداند.
مثال 14 : برگرداندن مجموعه ی ژانر ها
کد های VB.Net
Public Function GetGenres() As List(Of Genre)
Dim genres As Genre() = { _
New Genre With {.ID = 0, .Name = "Comedy"}, _
New Genre With {.ID = 1, .Name = "Drama"}, _
New Genre With {.ID = 2, .Name = "Action"} _
}
Return New List(Of Genre)(genres)
End Function
کد های C#
public List<Genre> GetGenres()
{
return new List<Genre> {
new Genre { ID=0, Name="Comedy" } ,
new Genre { ID=1, Name="Drama" } ,
new Genre { ID=2, Name="Action" }
};
}
سرانجام شما باید رویداد Page Load را به صورت زیر تغییر رهید. این رویداد شامل یک پرس و جو برای برگرداندن لسیت ژانر ها و پیوند آن با لیست فیلم ها است. این تغییرات را در مثال 15 نشان داده شده است.
مثال 15 : پیوند لیست ژانر و لیست فیلم با استفاده از LINQ
کد های VB.NET
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Dim movies = GetMovies()
Dim genres = GetGenres()
Dim query = From m In movies Join g In genres _
On m.Genre Equals g.ID _
Select New With {.Title = m.Title, .Genre = g.Name}
GridView1.DataSource = query
GridView1.DataBind()
End Sub
کد های C#
همانطور که در مثال بالا میبینید نحوه ی پیوند دو لیست نسبتا ساده است.