عبارات لامبدا در LINQ

شاید بتوان گفت که یکی از مهمترین کاربردهای عبارات لامبدا (Lambda expressions)، استفاده از آنها در متدهای LINQ باشد. همانطور که می دانید عبارت لامبدا یک نوع متد بی نام است. شکل کلی یک عبارت لامبدا به صورت زیر است :

(param1, param2, …paramN) => expr

البته عبارت لامبدا می تواند یک پارامتر هم داشته باشد :

(param1) => expr

مثالی از یک عبارت لامبدا در زیر آمده است :

(x, y) => x == y

این عبارت دو ورودی x و y را گرفته و آنهایی که با هم برابرند را بر می گرداند. با استفاده از عبارات لامبدا می توان خروجی ها را بهتر و دقیقتر فیلتر کرد. به مثال های زیر توجه کنید :

string[] names = { "Edward", "Monica", "Clara", "Jessica", "Jimmie" };

var result = names.Where(n => n.Contains("J"));

foreach (var name in result)
{
    Console.WriteLine(name);
}
Jessica
Jimmie

در مثال با استفاده از عبارت لامبدا در متد Where مشخص کرده ایم، که فقط عناصری از آرایه که شامل حرف J هستند نمایش داده شوند.

string[] names = { "Edward", "Monica", "Clara", "Jessica", "Jimmie" };

var result = names.Where (n => n.Contains("J"))
                  .Select(n => n.ToUpper());

foreach (var name in result)
{
    Console.WriteLine(name);
}
JESSICA
JIMMIE

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