برای ارتباط با مدیر سایت از ID تلگرام ebrahimi_younes@ استفاده نمایید. به سوالات و مشکلات برنامه نویسی پاسخ داده نمی شود.
کتاب های سی شارپ و جاوا به زبان ساده

متد ()Select

روش پرس و جوی دیگر که دقیقا معادل با عبارت select می باشد،متد ()select است. این متد یک عبارت لامبدا را به عنوان پارامتر می پذیرد. این عبارت لامبدا تمامی عناصر منبع داده را طرح ریزی می کند. در مثال زیر با استفاده از متد ()select تمامی عناصر مجموعه people را بدست آورده ایم.

var result = people.Select(p => p);

یک عبارت لامبدا را به عنوان آرگومان به متد ()select ارسال کرده ایم. عبارت لامبدا یک پارامتر به نام p دارد که در هر بار یک شی از نوع Person در آن قرار می گیرد ، این شی در صورتی در نتیجه کوئری قرار می گیرد که با شرطی که در سمت راست عبارت لامبدا نوشته شده است مطابقت داشته باشد.در کوئری بالا شرط خود شی انتخابی است پس تمامی عناصر مجموعه people در نتیجه کوئری قرار می گیرند. در زیر نمونه های بیشتری از کاربرد عبارت Select را مشاهده می کنید. در این مثال ها عبارات لامبدا مختلفی به متد ()select ارسال شده است :
1 – انتخاب خاصیت FirstName از تمامی عناصر people :

var firstNames = people.Select(p => p.FirstName);

2 – دو خاصیت FirstName و LastName از هر عنصر مجموعه را با هم ترکیب کرده و در نتیجه پرس و جو قرار می دهد :

var fullNames = people.Select(p => p.FirstName + " " + p.LastName);

3 – ابتدا یک نوع بی نام شامل یک خاصیت به نام FullName را ایجاد کرده و ترکیب 2 خاصیت FirstName و LastName را در آن قرار می دهد :

var annonymous = people.Select(p => new { FullName = p.FirstName + " " + p.LastName } );

نسخه دیگری از متد ()select نیز وجود دارد ، این نسخه یک عبارت لامبدا شامل 2 پارامتر ورودی می پذیرد ، اولین پارامتر بیانگر عنصر پرس و جو شده و دومین پارامتر نشان دهنده ایندکس آن عنصر در منبع داده است :

var personsWithIndex = people.Select((p, i) => new { Person = p, Index = i });

کوئری Linq زیر معادل آن است :

var personsWithIndex = from p in people
                       select new { Person = p, Index = people.IndexOf(p) };

سپس شما می توانید در هنگام چاپ مقادیر ، اندیس هر عنصر را نیز بنویسید :

foreach (var p in personsWithIndex)
{
    Console.WriteLine(String.Format("[{0}] {1}", p.Index, p.Person.FirstName));
}
[0] John
[1] Mark
[2] Lisa

شما می توانید از عبارات پرس و جو برای خوانایی بیشتر کد خود استفاده کنید یا متد های Linq را با استفاده از شکل متدی Linq فراخوانی کنید در این حالت باید از عبارات لامبدا استفاده کنید .

لطفا اگر نظر، پیشنهاد و یا انتقادی در باره مطلب بالا دارید در قسمت زیر و اگر سوالی دارید در بخش پرسش و پاسخ مطرح بفرمایید.