کلمه LINQ مخفف Language-Integrated Query می باشد. زبان LINQ یک زبان پرس و جو و یا Query گرفتن بسیار قدرتمند است که در .Net Frameworke 3.5 و Visual Studio 2008 معرفی شد. از زبان LINQ می توانید در سی شارپ و ویژوال بیسیک به منظور پرس و جو و یا Query گرفتن از منابع داده ای و یا Data Source های مختلف استفاده نمایید.
LINQ چیست؟
برای درک هرچه بهتر LINQ بهتر است که به SQL فکر کنیم. همانطور که احتمالاً می دانید واژه SQL مخفف Structured Query Language می باشد. SQL زبانی برای ذخیره کردن و بازیابی داده ها از درون یک دیتابیس است. در آموزش SQL و مایکروسافت اکسس Access جزئیات بیشتری را در رابطه با این زبان فرا خواهید گرفت. به طور مشابه زبان LINQ نیز به یک زبان ساختار یافته و یا Structured می باشد که به صورت درونی در سی شارپ و ویژوال بیسیک دات نت به منظور بازیابی داده ها از تعداد مختلفی از Data Source ها مورد استفاده قرار می گیرد. دقت کنید که یکی از جذابیت های بسیار مهم در کار کردن با LINQ در همین است که این زبان می تواند با Data Source های مختلف از قبیل کالکشن ها و دیتاست های مربوط به تکنولوژی ADO.NET و فایل های XML و Web Service ها و بانک اطلاعاتی MS SQL Server و حتی دیگر بانکهای اطلاعاتی کار کند. در رابطه با ADO.NET و کاربرد LINQ در استفاده کردن از آن میتوانید از آموزش ADO.NET و دیتابیس ها در سی شارپ دیدن کنید. ضمناً توصیه میکنیم که از آموزش رایگان LINQ to XML در سی شارپ بفرمایید. به منظور درک هرچه بهتر کاربرد LINQ در کار کردن با کلاس های کالکشنی در سی شارپ نیز توصیه میکنیم که از آموزش نکات و ترفندهای کالکشن ها و جنریک ها در سی شارپ نیز، دیدن بفرمایید.
زیبایی کار کردن با LINQ و Query های ایجاد شده توسط آن در این است که نتایج در قالب Object هایی برگردانده می شوند. این موضوع به شما کمک می کند تا بتوانید در یک فضای شی گرا و یا Object Oriented با این Result Set ها کار کرده و دیگر نگران تبدیل کردن فرمت های مربوط به Result Set ها به Object ها نباشید. یکی از موضوعات بسیار مهم در رابطه با LINQ قابلیت Differed Execution و اجرای به تعویق افتاده در آن می باشد. به عبارت دیگر، در کار کردن با LINQ و نوشتن Query های آن صرفاً در زمان نوشتن یک Query عملیات اجرا کردن آن اتفاق نمی افتد. یک Query می تواند به روش های مختلف پس از تعریف شدن اجرا بشود. یکی از روش های معمول استفاده کردن از حلقه های تکرار از قبیل حلقه foreach می باشد. این موضوع باعث میشود تا دستور نوشته شده با LINQ اجرا بگردد و نتایج آن برگردانده بشود. علاوه بر این موضوع، استفاده کردن از Execution Method هایی از قبیل ToList() که بر روی کانکشن ها تعریف می شوند نیز باعث اجرا شدن دستورات LINQ می گردد. بنابراین، صرف نوشتن یک Query بر روی یک Data Source به معنی اجرا شدن آن Query نیست. پس از نوشته شدن یک Query می بایست اقدام به اجرا کردن آن کنید.
چرا بایستی از LINQ استفاده کنیم؟
همانطور که احتمالاً می دانید قبل از ظهور سی شارپ نسخه 2 ما برای کار کردن با کالکشن ها و پیدا کردن یک Object خاص در آنها مجبور بودیم با حلقه های foreach و یا for و نوشتن کدها به صورت دستی این کار را انجام بدهیم. برای مثال، اگر قرار باشد که تمامی اعداد زوج درون یک آرایه که از اعداد صحیح تشکیل شده است را پیدا کنیم، میبایست یک حلقه for بنویسیم و سپس در بدنه آن حلقه شرط مربوط به زوج بودن و یا فرد بودن هر عدد را به صورت جداگانه کنترل کنیم. استفاده کردن از حلقه های تکرار اغلب قابلیت نگهداری و خوانایی کد را کاهش می دهند. در این رابطه در آموزش اصول کدنویسی با کیفیت بالا در سی شارپ صحبت کرده ایم. در سی شارپ 2 موضوع Delegate ها مطرح شد که با استفاده از آنها می توانستیم حجم کد درون حلقه های for را به مراتب ساده تر کنیم. در رابطه با Delegate ها نیز می توانید از آموزش Event ها، Delegate ها و Lambda Expression ها در سی شارپ دیدن کنید.
پس از مدتی، تیم توسعه دهنده سی شارپ احساس کرد که می بایست کدهای سی شارپ را هنوز هم فشرده تر و قابل خواناتر کند. بنابراین، آنها مباحثی از قبیل Extension Method ها و Lambda Expression ها و Expression Tree ها و Anonymous Type ها و Query Expression ها را در سی شارپ 3 مطرح کردند. تمامی این قابلیت ها در سی شارپ باعث شد که ما بتوانیم از LINQ استفاده کنیم و از آن به منظور پرس و جو کردن عناصر درون کالکشن هایی از انواع داده های مختلف و برگرداندن عناصر مورد نظر مان بهره مند شویم. استفاده کردن از زبان LINQ مزیت های بیشماری را در اختیار برنامه نویس قرار میدهد. اول اینکه به دلیل شباهت زیادی که بین این زبان LINQ و زبان سی شارپ وجود دارد، برنامه نویسان زبان سی شارپ دیگر نیازی ندارد که یک زبان دیگر از قبیل SQL را فرا بگیرند. با استفاده از LINQ حجم کدنویسی برنامه نویس کاهش پیدا می کند و مواردی از قبیل جستجو کردن عناصری با مشخصات خاص در یک آرایه و یا کالکشن ساده تر انجام می پذیرد. کدهای نوشته شده با LINQ قابلیت خوانایی بیشتری را دارند. علاوه بر این، LINQ یک روش استاندارد را برای کارکردن با گستره وسیعی از کالکشن ها را در اختیار برنامه نویس قرار میدهد. استفاده کردن از دستورات LINQ در ویژوال استودیو به سادگی با استفاده از IntelliSense قابل انجام است و نهایتاً، با استفاده از LINQ شما می توانید مبحثی به نام Data Shaping و یا تعیین کردن شکل داده ها را لحاظ کنید. در پایان، توصیه میکنیم که از آموزش رایگان LINQ در سی شارپ و آموزش مباحث پیشرفته LINQ در سی شارپ، استفاده نمایید.
مخاطبین این دوره آموزشی
برنامه نویسان سی شارپ که قصد دارند با موضوعات مربوط به LINQ آشنا بشوند و بتوانند با استفاده از آن از دیتابیس ها و object های موجود در حافظه پرس و جوهایی را داشته باشند میتوانند از مباحث مربوط به این دوره آموزشی استفاده کنند. در این دوره آموزشی موضوعات مربوط به زبان LINQ به طور مفصلی بررسی خواهد شد و اساس دانش و مهارت شما برای یادگیری موضوعات مختلف مطرح شده در دیگر آموزش ها ایجاد خواهد شد.
پیش نیازها
برای درک موضوعات مطرح شده در این آموزش متنی می بایست با زبان برنامه نویسی سی شارپ و موضوعات مربوط به شی گرایی آشنا باشید. در این رابطه می توانید از آموزش سی شارپ دات نت در ویژوال استادیو و آموزش شی گرایی OOP در سی شارپ دیدن کنید. علاوه بر این موضوعاتی از قبیل: Lambda Expression ها نیز میتوانند در یادگیری موضوعات مطرح شده در این آموزش بسیار مفید باشند. در این رابطه توصیه میکنیم از آموزش رایگان لامبدا اکسپرشن Lambda Expression در سی شارپ و آموزش رایگان دیلیگیت ها Delegate در سی شارپ دیدن کنید. پس از یادگیری موضوعات مطرح شده در این آموزش متنی توصیه میکنیم از آموزش LINQ در سی شارپ و آموزش مباحث پیشرفته LINQ در سی شارپ دیدن بفرمایید.