Ghép dữ liệu khách hàng và đơn hàng với LINQ Join trong C#
Trong bài học này, bạn sẽ ghép danh sách khách hàng với danh sách đơn hàng dựa trên mã khách hàng bằng LINQ Join.
Giới thiệu
Dữ liệu liên quan thường được lưu ở các danh sách riêng, ví dụ một danh sách khách hàng và một danh sách đơn hàng. Phương thức Join của LINQ ghép hai danh sách này dựa trên một khóa chung, tương tự như phép JOIN trong cơ sở dữ liệu.
Phương thức Join nhận bốn tham số: danh sách cần ghép, cách lấy khóa từ khách hàng (c => c.Id), cách lấy khóa từ đơn hàng (o => o.CustomerId), và cách tạo kết quả cho mỗi cặp khớp nhau. Mỗi đơn hàng được ghép với đúng khách hàng có cùng mã, cho kết quả Ada: 25 | Lin: 40.
Ví dụ C# chạy được
using System;
using System.Linq;
record Customer(int Id, string Name);
record Order(int CustomerId, decimal Total);
class Program
{
static void Main()
{
var customers = new[] { new Customer(1, "Ada"), new Customer(2, "Lin") };
var orders = new[] { new Order(2, 40m), new Order(1, 25m) };
var rows = customers.Join(orders, c => c.Id, o => o.CustomerId, (c, o) => $"{c.Name}: {o.Total}");
Console.WriteLine(string.Join(" | ", rows));
}
}
Ada: 25 | Lin: 40Luyệ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