0Pricing
C# Academy · บทเรียน

GroupBy, Join, Aggregate และการฉายผล (ชนิดนิรนาม)

จัดกลุ่มรายการ เชื่อมลำดับข้อมูล ลดผลลัพธ์ด้วย Aggregate และฉายผลลัพธ์ที่เป็นระเบียบด้วยชนิดนิรนาม

GroupBy, Join, Aggregate และการฉายผล (ชนิดนิรนาม) เป็นบทเรียน C# Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C# Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C# Academy มีบทเรียนทั้งหมด 3 บทเรียน

ภาพรวมตัวดำเนินการขั้นสูง

หัวข้อวันนี้:

  • GroupBy: สร้างกลุ่มตามคีย์
  • Join: รวมลำดับข้อมูลสองชุดโดยใช้คีย์
  • Aggregate: ลดข้อมูลให้เหลือค่าเดียว
  • ชนิดนิรนาม: ช่วยจัดระเบียบการแปลงข้อมูล

การจัดกลุ่มตามคีย์

GroupBy จะสร้างกลุ่มที่มี Key และลำดับข้อมูลภายในซึ่งประกอบด้วยรายการที่ใช้คีย์เดียวกัน

using System;
using System.Linq;

public class Program
{
  public static void Main(string[] args)
  {
    string[] words = new string[] { "ant", "cat", "tiger", "lion", "dog", "eagle" };

    var groups = words.GroupBy(w => w.Length);

    foreach (var g in groups)
    {
      Console.WriteLine("Len " + g.Key + ":");
      foreach (string w in g) Console.WriteLine(" - " + w);
    }
  }
}

การเชื่อมภายในตามคีย์

Join จะจับคู่รายการจากลำดับข้อมูลสองชุดตามคีย์ และแปลงผลลัพธ์ที่รวมกัน

using System;
using System.Linq;

public sealed class Customer { public int Id; public string Name; public Customer(int id, string name){ Id=id; Name=name; } }
public sealed class Order    { public int CustomerId; public string Item; public Order(int cid, string item){ CustomerId=cid; Item=item; } }

public class Program
{
  public static void Main(string[] args)
  {
    var customers = new Customer[] { new Customer(1,"Ada"), new Customer(2,"Bob") };
    var orders    = new Order[]    { new Order(1,"Book"), new Order(1,"Pen"), new Order(2,"Map") };

    var joined = customers.Join(
      orders,
      c => c.Id,
      o => o.CustomerId,
      (c, o) => c.Name + " -> " + o.Item);

    foreach (string s in joined) Console.WriteLine(s);
  }
}

พื้นฐาน Aggregate

Aggregate จะใช้ตัวสะสมเพื่อลดลำดับข้อมูลให้เหลือผลลัพธ์เดียว ควรเลือกค่าเริ่มต้นให้เหมาะสม

using System;
using System.Linq;

public class Program
{
  public static void Main(string[] args)
  {
    int[] xs = new int[] { 1, 2, 3, 4 };

    // Product with seed 1
    int product = xs.Aggregate(1, (acc, n) => acc * n);
    Console.WriteLine("Product = " + product); // 24

    // Join words with a separator using seed
    string[] words = new string[] { "a", "b", "c" };
    string csv = words.Aggregate("", (acc, w) => acc == "" ? w : acc + "," + w);
    Console.WriteLine(csv); // a,b,c
  }
}

การแปลงข้อมูลด้วยชนิดนิรนาม

ใช้ ชนิดนิรนาม เพื่อแปลงข้อมูลอย่างเป็นระเบียบ: new { Name = c.Name, ... } หรือใช้รูปแบบย่อ new { c.Name }

using System;
using System.Linq;

public sealed class City { public string Name; public int Pop; public City(string n,int p){ Name=n; Pop=p; } }

public class Program
{
  public static void Main(string[] args)
  {
    var cities = new City[]
    {
      new City("Oslo", 634000),
      new City("Rome", 2873000),
      new City("Riga", 605000)
    };

    var small = cities
      .Where(c => c.Pop < 1000000)
      .Select(c => new { c.Name, Millions = (c.Pop / 1000000.0) });

    foreach (var x in small)
    {
      Console.WriteLine(x.Name + " ~ " + x.Millions + "M");
    }
  }
}

เคล็ดลับเชิงปฏิบัติ

เคล็ดลับ:

  • หลังจากใช้ GroupBy ให้วนอ่านกลุ่มก่อน แล้วจึงวนอ่านรายการภายในกลุ่ม
  • ใช้ Join เมื่อมีแหล่งข้อมูลสองชุดที่มีคีย์ตรงกัน
  • เลือก ค่าเริ่มต้น ที่เหมาะสมสำหรับ Aggregate
  • ชนิดนิรนามเหมาะสำหรับใช้ภายในบริบทนั้น ๆ ให้ส่งคืน DTO ที่เป็นรูปธรรมจาก API สาธารณะ

จุดประสงค์ของ GroupBy

ตรวจสอบสั้น ๆ: ตัวดำเนินการ LINQ ใดจัดกลุ่มสมาชิกตามคีย์และส่งคืนลำดับข้อมูลของกลุ่ม

สรุป

สรุป: ใช้ GroupBy เพื่อสร้างกลุ่ม ใช้ Join เพื่อรวมแหล่งข้อมูล ใช้ Aggregate เพื่อลดข้อมูล และใช้ ชนิดนิรนาม เพื่อแปลงข้อมูลอย่างสะอาดและเป็นระเบียบ

คำถามที่พบบ่อย

บทเรียน “GroupBy, Join, Aggregate และการฉายผล (ชนิดนิรนาม)” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “GroupBy, Join, Aggregate และการฉายผล (ชนิดนิรนาม)” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C# Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C# Academy มีบทเรียนทั้งหมด 3 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “GroupBy, Join, Aggregate และการฉายผล (ชนิดนิรนาม)”

จัดกลุ่มรายการ เชื่อมลำดับข้อมูล ลดผลลัพธ์ด้วย Aggregate และฉายผลลัพธ์ที่เป็นระเบียบด้วยชนิดนิรนาม คุณปฏิบัติ C# Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C# Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน C# Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 3 บทเรียน

บทเรียน “GroupBy, Join, Aggregate และการฉายผล (ชนิดนิรนาม)” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน C# Academy นี้ได้ไหม

ได้ บทเรียน C# Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. GroupBy, Join, Aggregate และการฉายผล (ชนิดนิรนาม)
  2. การสร้างคอลเลกชัน (ToList, ToDictionary) และข้อควรรู้ด้านประสิทธิภาพ
  3. เคล็ดลับการประกอบใช้งาน
← กลับไปที่ C# Academy