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
สรุป
สรุป: ใช้ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- GroupBy, Join, Aggregate และการฉายผล (ชนิดนิรนาม)
- การสร้างคอลเลกชัน (ToList, ToDictionary) และข้อควรรู้ด้านประสิทธิภาพ
- เคล็ดลับการประกอบใช้งาน