آموزش جامع Linq

با این که فناوری LINQ در پائيز سال 2005 مطرح گردید ولی فرآیند پیاده سازی آن از سال 2003 آغاز شده بود . هدف از ابداع فناوری فوق، ارائه تسهيلات لازم برای پياده کنندگان جهت کار با داده در بانک های اطلاعاتی SQL و XML عنوان شده است. در واقع ، وجود یک حلقه گمشده بین داده رابطه ای ( بانک های اطلاعاتی ) ، اسناد XML با زبان های برنامه نویسی ، ضرورت ابداع فناوری فوق را توجيه کرده بود . پياده کنندگان مجبور بودند برای کار با هر يک از منابع داده ، از روش های مختلفی استفاده نمایند . LINQ را می توان به منزله حلقه ای گمشده بین دنیای داده و زبان های برنامه نویسی همه منظوره تصور کرد . با استفاده از LINQ امکان دستیابی به داده صرفنظر از نوع داده ، با روشی مشابه و یکسان فراهم می گردد .
شروع کار با Linq

Query یک عبارت است که داده هایی را از یک data source (منبع داده) بازیابی می کند. Query ها معمولا در زبان پرس و جو خاص خود نوشته می شوند. درطول زمان، زبان های مختلفی ویژه ی منبع داده های متفاوت ارائه شده....

Query های LINQ مبتنی بر نوع های generic هستند که در ویرایش 2.0 چارچوب کاری .Net از آن رونمایی شد. برای اقدام به نوشتن و تنظیم query ها نیازی به دانش جامعی از LINQ نیست. با این وجود، لازم است بر دو مفهوم پایه ای اشراف داشته باشید...

این مبحث توضیح مختصری درباره ی عبارت های (دستورات) Query های LINQ و نیز عملیات معمول که توسط یک Query ساده قابل اجرا می باشد، ارائه می دهد....

LINQ تنها به منظور بازیابی اطلاعات بکار نمی رود، بلکه وسیله ی کارآمد و قدرتمندی است که توسط آن می توان داده ها را تبدیل کرد. با استفاده از کوئری های LINQ، می توانید یک دنباله یا مجموعه (منبع داده همچون آرایه) را به عنوان ورودی بگیرید و آن را به روش های مختلف ویرایش نموده و سپس...

به منظور تنظیم بهینه ی یک Query (نوشتن یک کوئری کارامد به روش بهینه)، بایستی ارتباطی که نوع های داده ای متغیرها در عملیات مربوط به یک کوئری با هم دارند را به خوبی درک کنید. با فهم رابطه ی بین نوع داده ای متغیر ها در عملیات کوئری، نمونه کدهای LINQ را در مستندات آن بهتر درک می کنید....

اغلب کوئری ها یا دستورات پرس وجویی که در مستندات مقدماتی آموزش LINQ بکار برده می شوند به روش Query syntax نوشته و تنظیم می گردند. Query syntax بایستی (زمان کامپایل توسط مترجم) به method syntax (نوشتن به صورت متد) تبدیل شود....

بخش زیر ساختارهای جدیدی را معرفی می کند که برای اولین بار در ویرایش 3.0 زبان C# رونمایی شدند. اگرچه تمامی ساختارهای زیر تا اندازه ای برای تنظیم و نوشتن کوئری های LINQ مورد استفاده قرار می گیرند، اما فقط محدود به آن نبوده و در هر بستر دیگری که می توانند مفید واقع شوند، قابل بکار گیری می باشند....

در این مبحث نحوه ی نوشتن کوئری های LINQ با استفاده از امکانات و قابلیت های زبان C#را به شما آموزش می دهیم....

Generation به عملیات ایجاد مجموعه ی جدید از المان های مجموعه ی جاری اشاره دارد. متدهایی که یک مجموعه ی جدید از مجموعه ی جاری ایجاد می کنند در جدول زیر به نمایش درآمده اند...

دو مجموعه که المان های متناظر آن ها با هم برابر بوده و نیز از نظر تعداد المان های تشکیل دهنده یکسان می باشند، برابر (equal) تلقی می شوند....

با استفاده از عملگرهای Element می توان یک المان مشخص را از لیست گزینش کرده و استخراج نمود....

متدهای Conversion نوع داده ای اشیا ورودی را تغییر می دهند. عملیات تبدیل شی در LINQ بسیار پرکابرد می باشد. به عنوان مثال می توان به موارد زیر اشاره کرد...

عملیات Aggregate یک مقدار را از دنباله ی ورودی عدد محاسبه کرده و سپس خروجی را در قالب یک عدد واحد برمی گرداند (در واقع یک مقدار را از لیست مقادیر محاسبه و واکشی می کند). به عنوان مثال می توان به محاسبه ی میانگین دمای روزانه ی ماه از مجموع مقادیر دمای روزانه ی یک ماه اشاره کرد....
مرور کلی بر لینک

عملیات sorting عبارت است از مرتب نمودن المان های یک دنباله بر اساس یک یا چند خصیصه (attribute). اولین معیار مرتب سازی، المان ها را بر اساس مثلا خصیصه ی length (طول هر رشته) sort می کند....

عملیات Set در LINQ به عملیات پرس و جویی اشاره دارد که خروجی آن یک مجموعه نتیجه است که بر اساس حضور یا عدم حضور المان های معادل (متناظر) در همان مجموعه یا مجموعه ی دیگر تعیین می شود...

filtering عبارت است از محدود کردن مجموعه ی نتیجه و نمایش تنها آن المان هایی که با شرط تعیین شده منطبق هستند. از این عملیات تحت عنوان گزینش یا selection نیز یاد می شود....

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

با projection می توان یک شی را به نوع دیگری تبدیل کرد که دربردارنده ی property های مورد نظر از شی ذکر شده باشند. بنابراین projection به شما این امکان را می دهد تا یک نوع جدیدی ایجاد کنید که از هر شی موجود در مجموعه ساخته شده است....

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