مشخصات مقاله
-
1551
-
0.0
-
3417
-
0
-
0
آموزش LINQ و نوع Generic در C-Sharp
کلیه حقوق مادی و معنوی این مقاله متعلق به آموزشگاه تحلیل داده می باشد و هر گونه استفاده غیر قانونی از آن پیگرد قانونی دارد.
LINQ و نوع Generic در C#
Query های LINQ مبتنی بر نوع های generic هستند که در ویرایش 2.0 چارچوب کاری .Net از آن رونمایی شد. برای اقدام به نوشتن و تنظیم query ها نیازی به دانش جامعی از LINQ نیست. با این وجود، لازم است بر دو مفهوم پایه ای اشراف داشته باشید:
1. به هنگام ایجاد نمونه ای از کلاس جنریک collection مانند List<T>، در جایگاه حرف "T"، آن نوع شی ای را مشخص می کنید که قرار است در لیست گنجانده شود. به عنوان نمونه، لیستی از رشته ها به صورت List<string> و لیستی از اشیا Customer به شکل List<Customer> نگارش می شوند. یک لیست جنریک شدیدا وابسته به نوع (strongly typed) بوده و از مزایای بیشتری در مقایسه با collection ها که المان های خود را به صورت شی ذخیره می کنند، دارا می باشد. اگر سعی بر افزودن یک Customer به List<string> نمایید، در زمان ترجمه (compile-time) با خطا مواجه خواهید شد. اما از آنجایی که برای collection مجبور به اجرای type-casting (تبدیل نوع) در زمان اجرا نیستید، استفاده از collection آسان تر می باشد.
2. IEnumerable<T> یک interface است که به کلاس های جنریک collection امکان می دهد تا با استفاده از دستور foreach، شمرده شوند. همان طور که کلاس های غیر جنریک همچون ArrayList از IEnumerable پشتیبانی می کنند، کلاس های جنریک collection نیز از IEnumerable<T> پشتیبانی می کنند.
متغیرهای IEnumerable
نوع Query variable ها یا IEnumerable<T> یا یک نوع مشتق مانند IQueryable<T> می باشد. در صورت مواجه با یک query variable که نوع آن IEnumerable<Customer> تعریف شده، معنیش این است که query پس از اجرا، یک دنباله از اشیا Customer را به عنوان خروجی برمی گرداند.
IEnumerable
from cust in customers
where cust.City == "London"
select cust;
foreach (Customer customer in customerQuery)
{
Console.WriteLine(customer.LastName + ", " + customer.FirstName);
}
محول کردن مدیریت اعلان متغیرهای از نوع generic به کامپایلر
در صورت تمایل می توانید کلیدواژه ی var را جایگزین سینتکس generic نمایید (با مورد استفاده قرار دادن کلیدواژه ی var، از بکار بردن سینتکس generic خودداری نمایید). کلیدواژه ی var به کامپایلر دستور می دهد تا با مراجعه به data source تعریف شده در عبارت from، نوع query variable را تشخیص دهد.
var customerQuery2 =
from cust in customers
where cust.City == "London"
select cust;
foreach(var customer in customerQuery2)
{
Console.WriteLine(customer.LastName + ", " + customer.FirstName);
}
کلیدواژه ی var به خصوص زمانی کارآمد محسوب می شود که نوع متغیر کاملا برای ما مشخص است یا زمانی که نوع متغیر نامشخص و از نوع جنریک های تودرتو می باشد مانند نمونه هایی که توسط group query ها (کوئری هایی که المان ها را گروه بندی می کنند) تولید می شود. اما یک نکته ی قابل توجه این است که در صورت استفاده از var، باید این احتمال را هم در نظر بگیرید که کد شما برای دیگران قابل خواندن و فهم آسان نباشد.