فرض کنید متد زیر را در برنامه ی خود تعریف کرده اید که یک کالکشن از اشیا Customers را بر می گرداند.

 
Public Function GetPremiumCustomers() As List(of Customer)
Dim db As New dbContextObject
Return From c In db.Customers
Where c.IsPremium = True
Select c
End Function

مسئله این است که برنامه نویسان دیگر ممکن است نیاز داشته باشند که متد شما را به منظور انجام یک کار دیگر استفاده کنند:

 
res = (From c in GetPremiumCustomers()
Where c.City = "Regina"
Select c).ToList()

مشکل دستور بالا در این است که تمامی نمونه های (Instance) های شی Customer را بر می گرداند، در حالی که دستور مورد نظر فقط تعدادی از آنها (کسانی که در شهر Regina) ساکن هستند را نیاز دارد. همه ی ما می دانیم که خواندن رکوردهایی که به آنها نیازی نداریم، باعث کاهش سرعت بانک اطلاعاتی می شود. به نظر شما، اگر می توانستیم دستور LINQ ی که در بالا در متد GetPremiumCustomers بود را با دستور LINQ ی که در قسمت بالا تعریف شد را ترکیب می کردیم بهتر نبود؟ البته منظور ما این است که این ترکیب زمانی اتفاق بیفتد که دستورات SQL متناظر با این دستور LINQ تولید می شود.

خبر خوب این که در دات نت به راحتی می توان این ترکیب را انجام داد تا فقط مشتری های Premimum ساکن در Regina برگرداننده شوند. تنها کاری که نیاز است انجام دهید این است که نوع خروجی متد GetPremiumCustomers که در بالا تعریف کردید را از نوع اینترفیس IQueryable تعریف کنید:

 
Public Function GetPremiumCustomers() As IQueryable(of Customer)
Return From c In db.Customers
Where c.IsPremium = True
Select c
جستجو
دسته های مقالات

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *