عملگرهای انتخاب Select و SelectMany
در زبان کوئری نویسی LINQ دو نوع عملگر انتخاب وجود دارد که یکی Select و دیگری SelectMany است. در بخش این دو عملگر را بررسی خواهیم کرد.
عملگر Select
عملگر Select همیشه یک مجموعه از نوع IEnumerable باز میگرداند که شامل آیتم هایی است که توسط تابع مبدل داده ها تولید شده اند. این عملگر مشابه عملگر SELECT در SQL است. برای درک بهتر چگونگی عملکرد این عملگر در ادامه چند مثال ساده را بررسی می کنیم.
عملگر Select در سینتکس کوئری
در سینتکس کوئری، یک کوئری باید با یک Select یا GroupBy خاتمه یابد. در مثال زیر ما با استفاده از عملگر Select مجموعه ای از اسامی دانش آموزان را تولید می کنیم:
1 2 3 4 5 6 7 8 9 | IList<Student> studentList = new List<Student>() { new Student() { StudentID = 1, StudentName = "John" }, new Student() { StudentID = 2, StudentName = "Moin" }, new Student() { StudentID = 3, StudentName = "Bill" }, new Student() { StudentID = 4, StudentName = "Ram" }, new Student() { StudentID = 5, StudentName = "Ron" } }; var selectResult = from s in studentList select s.StudentName; |
از این عملگر می توان به منظور شکل دادن به نتیجه نهایی استفاده کرد. برای نمونه می توان نتیجه را به صورت مجموعه ای از یک کلاس خاص یا یک نوع anonymous شامل خاصیت های مورد نیاز تغییر داد.
در مثال زیر با استفاده از عملگر Select از مجموعه studentList نام و سن دانش آموزان را با استفاده از یک نوع anonymous انتخاب می کنیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 | IList<Student> studentList = new List<Student>() { new Student() { StudentID = 1, StudentName = "John", Age = 13 } , new Student() { StudentID = 2, StudentName = "Moin", Age = 21 } , new Student() { StudentID = 3, StudentName = "Bill", Age = 18 } , new Student() { StudentID = 4, StudentName = "Ram" , Age = 20 } , new Student() { StudentID = 5, StudentName = "Ron" , Age = 15 } }; // returns collection of anonymous objects with Name and Age property var selectResult = from s in studentList select new { Name = "Mr. " + s.StudentName, Age = s.Age }; // iterate selectResult foreach (var item in selectResult) Console.WriteLine("Student Name: {0}, Age: {1}", item.Name, item.Age); |
خروجی مثال فوق به شکل زیر خواهد بود:
1 2 3 4 5 | Student Name: Mr. John, Age: 13 Student Name: Mr. Moin, Age: 21 Student Name: Mr. Bill, Age: 18 Student Name: Mr. Ram, Age: 20 Student Name: Mr. Ron, Age: 15 |
عملگر Select در سینتکس متد
در سینتکس متد استفاده از عملگر Select اختیاری است. با این حال شما می توانید با کمک آن نتیحه نهایی را بر اساس نیاز خود شکل دهید. پیادهسازی مثال فوق با استفاده از متد افزودنی Select به این صورت خواهد بود:
1 2 3 4 5 6 7 8 9 | IList<Student> studentList = new List<Student>() { new Student() { StudentID = 1, StudentName = "John", Age = 18 } , new Student() { StudentID = 2, StudentName = "Moin", Age = 21 } , new Student() { StudentID = 3, StudentName = "Bill", Age = 18 } , new Student() { StudentID = 4, StudentName = "Ram" , Age = 20 } , new Student() { StudentID = 5, StudentName = "Ron" , Age = 21 } }; var selectResult = studentList.Select(s => new { Name = s.StudentName , Age = s.Age }); |
عملگر SelectMany
عملگر SelectMany بر روی دنباله ای از مجموعه ها عمل می کند و نتیجه را به صورت یک مجموعه باز می گرداند. برای مشاهده جزئیات بیشتر از نحوه کارکرد این عملگر به مستندات عملگر SelectMany مراجعه کنید.
هیچ نظری ثبت نشده است