Gom nhóm học sinh với LINQ trong C#
Trong bài học này, bạn sẽ gom nhóm học sinh theo xếp loại và tính điểm trung bình của từng nhóm bằng LINQ.
Giới thiệu
Phương thức GroupBy của LINQ chia một danh sách thành các nhóm dựa trên một khóa, ví dụ xếp loại A hay B. Sau đó, bạn có thể tính toán riêng cho từng nhóm như đếm số lượng, tính tổng hay tính trung bình.
GroupBy(s => s.Grade) chia học sinh thành nhóm A và nhóm B, còn OrderBy(g => g.Key) sắp xếp các nhóm theo tên. Mỗi nhóm có thuộc tính Key là tên xếp loại và có thể dùng trực tiếp các phương thức LINQ như Average. Nhóm A có điểm trung bình 93.0, nhóm B là 84.0.
Ví dụ C# chạy được
using System;
using System.Linq;
record Student(string Name, string Grade, int Score);
class Program
{
static void Main()
{
var students = new[] { new Student("Ada", "A", 95), new Student("Lin", "B", 84), new Student("Grace", "A", 91) };
foreach (var group in students.GroupBy(s => s.Grade).OrderBy(g => g.Key))
Console.WriteLine($"{group.Key}: {group.Average(s => s.Score):F1}");
}
}
A: 93.0
B: 84.0Luyện tập với trình gỡ lỗi
Luyện tập với thử thách
Áp dụng kiến thức của bài học này để giải một bài toán thực tế. Mỗi thử thách chạy ngay trên trình duyệt, có kiểm thử tức thì và AI nhận xét.
Tất cả thử thách