ably ably برای هدایت شدن به سایت جدید اینجا کلیک کنید

آموزش برنامه نویسی

آموزش برنامه نویسی وب، اندروید، ویندوز , اسکیوال و...
Tell: 0912 097 5516
| Email: Hello@EduOnline.ir

تفاوت دستور Select با SelectMany در LINQ

بسم الله الرحمن الرحیم

تفاوت دستور Select  با SelectMany در LINQ

می توانید مقاله آموزش Linq به زبان فارسی را از این قسمت مشاهده کنید.

دو عملگر Select  و SelectMany عملگر های projection هستند. عملگر Select  برای انتخاب مقادیر از یک مجموعه است اما عملگر SelectMany برای انتخاب مقادیر یک مجموعه از مجموعه دیگر است.
اپراتور یا عملگر Select یک مقدار را به عنوان خروجی به شما می دهد در صورتی که SelectMany یک خروجی شامل مقادیری مرتبط به یکدیگر را به شما ارائه می دهد.
عملا، عملگر SelectMany یک IEnumerable<IEnumerable<T>>  در IEnumrable<T>  ایجاد می کند. اینطور می توان گفت که، یک لیست که خود این لیست هر عنصرش یک لیست است را از یک مجموعه ایجاد می کند.

مثال

    class Employee
    {
    public string Name { get; set; }
    public List<string> Skills { get; set; }
    }
     
    class Program
    {
    static void Main(string[] args)
    {
    List<Employee> employees = new List<Employee>();
    Employee emp1 = new Employee { Name = "Deepak", Skills = new List<string> { "C", "C++", "Java" } };
    Employee emp2 = new Employee { Name = "Karan", Skills = new List<string> { "SQL Server", "C#", "ASP.NET" } };
     
    Employee emp3 = new Employee { Name = "Lalit", Skills = new List<string> { "C#", "ASP.NET MVC", "Windows Azure", "SQL Server" } };
     
    employees.Add(emp1);
    employees.Add(emp2);
    employees.Add(emp3);
     
    // Query using Select()
    IEnumerable<List<String>> resultSelect = employees.Select(e=> e.Skills);
     
    Console.WriteLine("**************** Select ******************");
     
    // Two foreach loops are required to iterate through the results
    // because the query returns a collection of arrays.
    foreach (List<String> skillList in resultSelect)
    {
    foreach (string skill in skillList)
    {
    Console.WriteLine(skill);
    }
    Console.WriteLine();
    }
     
    // Query using SelectMany()
    IEnumerable<string> resultSelectMany = employees.SelectMany(emp => emp.Skills);
     
    Console.WriteLine("**************** SelectMany ******************");
     
    // Only one foreach loop is required to iterate through the results
    // since query returns a one-dimensional collection.
    foreach (string skill in resultSelectMany)
    {
    Console.WriteLine(skill);
    }
     
    Console.ReadKey();
    }
    }
     
    /* Output
    **************** Select ******************
     
    C
    C++
    Java
     
    SQL Server
    C#
    ASP.NET
     
    C#
    ASP.NET MVC
    Windows Azure
    SQL Server
     
    **************** SelectMany ******************
     
    C
    C++
    Java
    SQL Server
    C#
    ASP.NET
    C#
    ASP.NET MVC
    Windows Azure
    SQL Server
    */

نظرات (۰)

هيچ نظري هنوز ثبت نشده است
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی
up
ما را در گوگل محبوب کنید