در مطلب پیشین در مورد نوشتن کوئری توسط LINQ صحبت کردیم و آموزش دادیم که به دو شیوه Method Syntaxt و Query Syntaxt می توانیم درون برنامه های NET Framework کوئری های LINQ را بنویسیم. در این مطلب می خواهیم تا اندازه ای در مورد این دو شیوه صحبت کنیم و از مطلب های پیش رو، مثال ها و کوئری های متفاوت را تا حد ممکن آموزش داده ایم.

شیوه Query Syntax

الگوی زیر حالت کلی شیوه Query Syntax را نشان می دهد که با عبارت from شروع و با عبارت select پایان یافته است. در بخش Standard Query Operators، عبارتی مانند where می توانند استفاده شوند. همچنین در الگوی زیر range variable در جلوی عبارت from، سپس می تواند به عنوان پارامتر در عبارت لامبدا استفاده شود. شکل زیر نموه سادی از شیوه Query Syntax را نشان می دهد.

در بالا Collection جلوی from range variable in یک ارآیه است ولی می تواند هر Collection دیگری مانند لیست و یا شی های IQueryable باشد. مفهوم کوئری بالا به این صورت است که از (from) هر عنصر درون Collection، درون متغیر range variable (در شکل بالا متغیر u) ریخته شود. سپس اگر کاراکتر نخست عنصر آن A باشد، پس عنصر بوسیله عبارت select گزینش خواهد شد. اگر دقت کنید می بینید که ساختار عبارت from همانند عبارت foreach است که در مطلب های پیش برای پیمایش استفاده شده است. بنابراین الگوی Query Syntax با عبارت select یا groupBy به پایان می رسد و برابر با مطلب پیش رو، خواهید دید می توانید یک یا چندین ویژگی یا تمامی ویژگی ها را واکشی کنید.

شیوه Method Syntax

در شیوه Method Syntax به صورت ساختاری درختواره، از متدهای LINQ که با نقطه از هم جدا می شوند، برای اجرای کوئری کمک گرفته می شود. شکل زیر کدی است که در آن شیوه متدی به کار رفته و می بینید که از متدهای ()Where و ()Select برای ایجاد و انجام کوئری کمک گرفته شده است. کد شکل زیر را می توانیم به صورت زیر نیز بازنوسی کنیم به طوری که دنباله ای از متدها با نقطه از هم جدا شده اند.

در کد شکل بالا و برابر با کاربرد عبارت لامبدا، همانطور که می بینید یک عبارت لامبدا تک پارامتری به عنوان ورودی به متد ()Where فرستاده شده است که المان آرایه را در صورتی بر می گزیند که شامل کاراکتر A باشد و سپس درون متد ()Select آن المان بوسیله عبارت لامبدا n => n گزینش می شود. به عبارت دیگر لامبدا n => n به معنی برگزیدن المان است. در مطلب پیش رو خواهید دید که بخش سمت راست عملگر <= درعبارت لامبدا، می تواند یک عبارت new باشد تا با ایجاد نمونه تازه بتوانیم تنها ویژگی های دلخواهی را گزینش کنیم.