Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

อะไรคือความแตกต่างระหว่าง Select และ SelectMany ใน Linq C #?


ตัวดำเนินการ Select จะสร้างค่าผลลัพธ์หนึ่งค่าสำหรับทุกๆ ต้นทาง SelectMany Operator อยู่ในหมวด Projection Operators ใช้เพื่อฉายแต่ละองค์ประกอบของลำดับเป็น IEnumerable และทำให้ลำดับผลลัพธ์เป็นลำดับเดียว

ตัวอย่าง

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();
   }
}

ผลลัพธ์

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