LINQ چیست ؟
LINQ مخفف Language Integrated Query به معنای زبان پرس و جوی یکپارچه است که در دات نت نسخه 3.5 معرفی شد و به برنامه نویس اجازه می دهد داده ها را از هر نوع منبع داده ای بدون نیاز به دانستن یک زبان دیگر پرس و جو کند. پرس و جو فرایند به دست آوردن داده از منبع داده است. LINQ پرس و جوی داده از منابع داده ای مختلف را بسیار راحت کرده است. این زبان با زبانهای C# و VB آمیخته شده است و چندین کلمه کلیدی و دستور زبان برای استفاده از آن به دو زبان مذکور اضافه شده است. قبل از ورود LINQ، برنامه نویسان مجموعه کدهای مختلفی برای منابع داده ای مختلف می نوشتند. به عنوان مثال، برای پرس و جو در یک دیتابیس SQL از دستورات SQL یا برای فایل های XML از Xpath استفاده می کردند. اما اکنون با استفاده از قدرت LINQ فقط لازم است با کلمات کلیدی LINQ و متدهای آن که در دات نت 3.5 معرفی شدند آشنا باشید.
چندین نوع LINQ به دلیل وجود provider های مختلف وجود دارد (شکل بالا). ویژوال استودیو دارای چندین provider مانند LINQ to Objects می باشد. در این قسمت تمرکز ما بر LINQ to Objects است که در پرس و جوی مجموعه ای از اشیاء در کد شما که رابط IEnumerable
تکنیک های پرس و جو به کار فته در درس های زیر می توانند در انواع مختلف LINQ مورد استفاده قرار بگیرند. شما می تونید با استفاده از متد های الحاقی که در رابط IEnumerable
زبان برنامه نویسی سی شارپ جز زبان های روالمند است به این معنی که شما برای حل یک مسئله باید قدم به قدم کد های آن را بنویسید ولی LINQ جز زبان های غبر روالمند است به این معنی که شما به کامپیوتر می گویید که چه چیزی را لازم دارید(صرف نظر از الگوریتم آن) و کامپیوتر آن را برای شما فراهم می کند. قبلا از LINQ ، شما فقط باید با استفاده از زبان های روالمند در بین نتایج پرس و جو می کردید . برای مثال فرض کنید که قصد دارید لیست تمامی اعداد زوج داخل یک آرایه را بدست آورید .
برای نوشتن راه حل مسئله بالا با استفاده از زبان برنامه نویسی سی شارپ کد شما چیزی شبیه کد زیر می شود :
List<int> evenNumbers = new List<int>(); int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; foreach(int num in numbers) { if (num % 2 == 0) evenNumbers.Add(num); }
با استفاده از کد بالا شما به کامپیوتر دستور می دهید که تک تک مقادیر داخل آرایه را بررسی کند و مقادیری که با شرط داده شده مطابقت دارند را به لیست اضافه کند. حالا مثال بالا را با استفاده از زبان LINQ به شکل زیر بازنویسی کرده ایم :
List<int> evenNumbers = new List<int>(); int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; foreach(int num in numbers) { if (num % 2 == 0) evenNumbers.Add(num); }