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

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

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

 

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

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

 

دو عملگر Select  و SelectMany عملگر های projection هستند. عملگر Select  برای انتخاب مقادیر از یک مجموعه است اما عملگر SelectMany برای انتخاب مقادیر یک مجموعه از مجموعه دیگر است.
اپراتور یا عملگر Select یک مقدار را به عنوان خروجی به ش

 

 

 

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

 

تفاوت دستور 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
    */

نظرات یا سوالات خودرا با ما درمیان بگذارید

0912 097 5516 :شماره تماس
0713 625 1757 :شماره تماس