Computer >> Máy Tính >  >> Lập trình >> C#

Sự khác biệt giữa Select và SelectMany trong Linq C # là gì?


Toán tử Select tạo ra một giá trị kết quả cho mọi nguồn SelectMany Operator thuộc loại Toán tử chiếu. Nó được sử dụng để chiếu từng phần tử của một trình tự lên IEnumerable và làm phẳng các trình tự kết quả thành một trình tự.

Ví dụ

class Demo{
   public string Name { get; set; }
   public List<string> Contents { get; set; }
   public static List<Demo>GetAllContents(){
      List<Demo> listContents = new List<Demo>{
         new Demo{
            Name = "Cap",
            Contents = new List<string> { "Nike", "Adidas" }
         },
         new Demo{
            Name = "Shoes",
            Contents = new List<string> { "Nike", "Puma", "Adidas" }
         },
      };
      return listContents;
   }
}
class Program{
   static void Main(){
      IEnumerable<List<string>> result = Demo.GetAllContents().Select(s => s.Contents);
      foreach (List<string> stringList in result){
         foreach (string str in stringList){
            Console.WriteLine(str);
         }
      }
      Console.WriteLine("---Select Many---")
      IEnumerable<string> resultSelectMany = Demo.GetAllContents().SelectMany(s => s.Contents);
      foreach (string str in resultSelectMany){
         Console.WriteLine(str);
      }
      Console.ReadKey();
   }
}

Đầu ra

Nike
Adidas
Nike
Puma
Adidas
---Select Many---
Nike
Adidas
Nike
Puma
Adidas