Bài tập C#

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

C#
Chạy code →
Program.cs
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}");
    }
}
Kết quả khi chạy
A: 93.0
B: 84.0

Luyện tập với trình gỡ lỗi

Đặt breakpoint ở một phép gán hoặc điều kiện quan trọng, bấm Debug và xem giá trị các biến cục bộ (local variable) trước khi bước sang dòng tiếp theo.

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