در این مطلب می خواهیم در مورد عبارت WHERE در LINQ صحبت کنیم. از WHERE برای فیلتر کردن سطرها بر اساس یک یا چندین شرط استفاده می شود. متد ()Where یک یا چندین عبارت شرطی را دریافت و سپس بر اساس آنها، یک مجموعه (Collection) تازه برگشت می دهد. در شکل زیر نمونه کاربرد ساده از متد ()Where نشان داده شده است که در آن تنها سطرهایی واکشی می شوند که خصوصیت (ستون) سن آنها ۳۵ سال باشد. شکل دوم نیز الگو Query Syntax را پیاده سازی کرده است.

در کد زیر به دنبال سطرهایی هستیم مقدار ویژگی Age آنها برابر با ۳۵ و نام آنها با کاراکتر A آغاز شده باشد. همانطور که می بینید درون متد ()Where از علمگر && درون بخش عبارت لامبدا استفاده کرده ایم. همچنین از متد ()StartsWith استفاده کرده ایم تا بررسی کنیم که آیا رشته ویژگی FirstName با A شروع شده است یا نه؟ متد ()StartsWith در سی شارپ یک رشته را دریافت کرده و سپس بررسی می کند که آیا رشته ورودی آغاز رشته دیگر هست یا نه؟ در شکل سمت چپ از الگوی Method Syntax و در شکل سمت راست از شیوه Query Syntax استفاده شده است.

در کدهای زیر به دنبال سطرهایی هستیم که خصوصیت Age آنها میان ۳۰ تا کمتر از ۳۴ سال باشد. بنابراین درون شرط پیش روی Where عملگر && به کار رفته است. همچنین در کد شکل دومی بررسی می شود که سن میان ۳۰ تا کمتر از ۳۴ سال باشد و یا اینکه از مشهد باشد. بنابراین شرط نخست میان پرانتز و از عملگر && استفاده شده است و سپس بوسیله عملگر || شرط دوم نوشته شده است.

در کدهای زیر نشان داده ایم که می توانیم چندین عبارت where را درون کوئری های LINQ به کار ببریم. در کد سمت چپ و بوسیله چندین عبارت where و به شیوه Query Syntax بررسی شده است که سن میان بازه ۳۰ تا کمتر از ۳۴ سال باشد. در شکل سمت دوم از چندین عبارت where در شیوه Method Syntax به کارگرفته شده است.

در شکل زیر خروجی کوئری های آماده شده در بالا را می بینید. برابر با کدهای بالا، عملگر && (یا AND منطقی در سی شارپ) به عملگر AND در زبان SQL و عملگر || (یا OR منطقی در سی شارپ) به عکلگر OR در زبان SQL نگاشت داده می شود. سپس این کوئری بوسیله فراهم کننده داده به پایگاه داده هدف (در اینجا SQL Server) فرستاده می شود.

در کدهای زیر نخست یک لیست از رشته تعریف شده است و سپس درون متد ()Where و به صورت یک عبارت لامبدا بررسی می کنیم که آیا اندازه رشته کوچکتر از ۶ است یا نه و در این صورت به رشته به متغیر query از نوع IEnumerable افزوده می شود.

در شکل زیر نخست یک آرایه از عددهای صحیح تعریف کرده ایم و سپس درون متد ()Where و بوسیله یک عبارت لامبدا دو پارامتری، بررسی می کنیم که آیا ضرب اندیس عدد در آرایه در خود عدد از عدد بزرگتر است یا نه؟ اگر اینطور باشد، عدد به متغیر query افزوده خواهد شد.

دانلود سورس برنامه این مطلب Entity Framework Select and Where LINQ