کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش متدهای الحاقی Any، All و Contains

دوره آموزشی Asp.net

 کلیه حقوق مادی و معنوی این مقاله متعلق به آموزشگاه تحلیل داده می باشد و هر گونه استفاده غیر قانونی از آن پیگرد قانونی دارد.

متدهای الحاقی Any، All و Contains (عملیات کمیت سنجی/Quantifier)

عملیات Quantifier یک مقدار بولی را برمی گردانند که بیانگر تطبیق یا عدم تطبیق برخی یا تمام المان های مجموعه مورد پرس و جو با شرط می باشد.

تصویر زیر دو عملیات کاملا متفاوت را بر روی دو منبع داده مختلف نشان می دهد. اولین عملیات تنها کاراکترهای A را از منبع داده استخراج می کند (در واقع بررسی می کند آیا یک یا چند المان دنباله ی ورودی (منبع) با حرف A منطبق هستند یا خیر و همان طور که مشاهده می کنید نتیجه ی آن true می باشد). عملیات دوم بررسی می کند آیا تمامی المان های موجود در منبع داده با شرط مشخص شده منطبق هستند یا خیر (از منبع داده می پرسد آیا کلیه ی المان های آن برابر با A هستند یا خیر). نتیجه ی این عملیات نیز مقدار بولی true می باشد. 

آموزش Linq

 

عملگرهایی که به صورت متد الحاقی (extension method) برای اجرای این دست عملیات فراخوانده می شوند، در جدول زیر فهرست شده اند.

اسم متد

شرح

سینتکس/ دستور نگارشی عبارت کوئری در زبان C#

نحوه ی نوشتن/سینتکس عبارت کوئری در VB

اطلاعات بیشتر

All

مشخص می کند آیا تمامی المان های موجود در یک مجموعه، شرط مشخص شده در عبارت کوئری را برآورده می کنند یا خیر.

پشتیبانی نمی شود.

Aggregate …In …Into All(…)

Enumerable.All

Queryable.All

Any

بررسی می کند آیا هر یک از المان های موجود در مجموعه، شرط مشخص شده در عبارت کوئری را برآورده می کند یا خیر.

پشتیبانی نمی شود.

Aggregate …In …Into Any()

Enumerable.Any

Queryable.Any

Contains

بررسی می کند آیا یک مجموعه دربردارنده ی المان مشخص شده هست یا خیر.

پشتیبانی نمی شود.

پشتیبانی نمی شود.

Enumerable.Contains

Queryable.Contains

 

مثال

نمونه ی زیر دستور Aggregate را به عنوان بخشی از یک شرط (عبارت فیلتر و محدود کننده ی نتیجه) در کوئری LINQ (در زبان VB) بکار می برد.

مثال زیر با استفاده از عبارت Aggregate و متد الحاقی (extension method) All<TSource> تنها آن افرادی را از مجموعه واکشی می کند که سن حیوان خانگی آن ها از مقدار مشخص شده در شرط کم تر باشد. 

 

 

Class Person

   Public Property Name As String

   Public Property Pets As Pet()

End Class

 

Class Pet

   Public Property Name As String

   Public Property Age As Integer

End Class

 

Sub All()

   Dim barley As New Pet With {.Name = "Barley", .Age = 4}

   Dim boots As New Pet With {.Name = "Boots", .Age = 1}

   Dim whiskers As New Pet With {.Name = "Whiskers", .Age = 6}

   Dim bluemoon As New Pet With {.Name = "Blue Moon", .Age = 9}

   Dim daisy As New Pet With {.Name = "Daisy", .Age = 3}

 

   Dim charlotte As New Person With {.Name = "Charlotte", .Pets = New Pet() {barley, boots}}

   Dim arlene As New Person With {.Name = "Arlene", .Pets = New Pet() {whiskers}}

   Dim rui As New Person With {.Name = "Rui", .Pets = New Pet() {bluemoon, daisy}}

 

   ' Create the list of Person objects that will be queried.

   Dim people As New System.Collections.Generic.List(Of Person)(New Person() {charlotte, arlene, rui})

 

   Dim query = From pers In people

               Where (Aggregate pt In pers.Pets Into All(pt.Age >2))

               Select pers.Name

 

   Dim sb As New System.Text.StringBuilder()

   For Each name As String In query

       sb.AppendLine(name)

   Next

 

   ' Display the results.

   MsgBox(sb.ToString())

 

   ' This code produces the following output:

 

   ' Arlene

   ' Rui

 

End Sub

 

مثال بعدی با بهره گیری از Aggregate و متد الحاقی Any<TSource> تنها آن افرادی را از مجموعه واکشی می کند که دارای حداقل یک حیوان خانگی بوده و همچنین سن آن بیشتر از مقدار مشخص شده در عبارت شرطی باشد. 

 

 

 

Class Person

   Public Property Name As String

   Public Property Pets As Pet()

End Class

 

Class Pet

   Public Property Name As String

   Public Property Age As Integer

End Class

 

Sub Any()

   Dim barley As New Pet With {.Name = "Barley", .Age = 4}

   Dim boots As New Pet With {.Name = "Boots", .Age = 1}

   Dim whiskers As New Pet With {.Name = "Whiskers", .Age = 6}

   Dim bluemoon As New Pet With {.Name = "Blue Moon", .Age = 9}

   Dim daisy As New Pet With {.Name = "Daisy", .Age = 3}

 

   Dim charlotte As New Person With {.Name = "Charlotte", .Pets = New Pet() {barley, boots}}

   Dim arlene As New Person With {.Name = "Arlene", .Pets = New Pet() {whiskers}}

   Dim rui As New Person With {.Name = "Rui", .Pets = New Pet() {bluemoon, daisy}}

 

   ' Create the list of Person objects that will be queried.

   Dim people As New System.Collections.Generic.List(Of Person)(New Person() {charlotte, arlene, rui})

 

   Dim query = From pers In people

               Where (Aggregate pt In pers.Pets Into Any(pt.Age >7))

               Select pers.Name

 

   Dim sb As New System.Text.StringBuilder()

   For Each name As String In query

       sb.AppendLine(name)

   Next

 

   ' Display the results.

   MsgBox(sb.ToString())

 

   ' This code produces the following output:

 

   ' Rui

 

End Sub

1395/01/25 5340 1263
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...