Trong loạt bài viết này, bạn sẽ xem các ví dụ về truy vấn LINQ thì cấp độ dễ đến khó, hi vọng thông qua các ví dụ, bạn sẽ dễ hiểu hơn về truy vấn LINQ cũng như có hứng thú học. Mặc dù nỗ lực đưa ra các ví dụ mang tính thực tế, tuy nhiên chúng không thể bao quát hết được các vấn đề về truy vấn LINQ. Khi đó, bạn có thể gợi ý để chúng tôi có thể tiếp tục xây dựng các ví dụ ngày càng phong phú. Ngoài ra, mời bạn xem LINQ cơ bản nếu chưa biết gì về LINQ.
1. Đếm số phần tử theo điều kiện
Ví dụ sau cho phép bạn đếm số phần tử trong một tập hợp là số chẵn.
var numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; var countEvenNumbers = numbers.Count(n => n % 2 == 0); // Kết quả: countEvenNumbers = 5 -- dammio.com
2. Bỏ qua và lấy giá trị
Ví dụ sau bỏ qua 3 phần tử đầu tiên và lấy 4 phần tử sau đó.
var numbers = Enumerable.Range(1, 10); var skipAndTake = numbers.Skip(3).Take(4); // Kết quả: skipAndTake = [4, 5, 6, 7] -- dammio.com
3. Gom nhóm và tổng hợp
Ví dụ gom nhóm theo sản phẩm và tính tổng số tiền đã bán ra cho từng sản phẩm.
var sales = new List<Sale> { new Sale { Product = "Laptop", Amount = 1000 }, new Sale { Product = "Phone", Amount = 500 }, new Sale { Product = "Laptop", Amount = 1200 }, new Sale { Product = "TV", Amount = 800 }, new Sale { Product = "Phone", Amount = 600 } }; var productSales = sales .GroupBy(sale => sale.Product) .Select(group => new { Product = group.Key, TotalSales = group.Sum(sale => sale.Amount) }); // Kết quả: productSales chứa các dữ liệu thể hiện số lượng bán ra của "Laptop" và "Phone".
4. Làm phẳng các tập lồng nhau (Flattening Nested Collections)
Bạn có một tập các đơn hàng và mỗi đơn hàng có một danh sách các sản phẩm bán ra trong đơn hàng. Ví dụ cho phép làm phẳng (flattening) để có được danh sách chứa tất cả các mục trong đơn hàng kèm theo số lượng bán ra. Truy vấn này thường dễ gặp ở các website bán hàng.
var orders = new List<Order> { new Order { OrderId = 1, Items = new List<OrderItem> { new OrderItem { Product = "Laptop", Quantity = 2 }, new OrderItem { Product = "Mouse", Quantity = 3 } } }, new Order { OrderId = 2, Items = new List<OrderItem> { new OrderItem { Product = "Keyboard", Quantity = 1 }, new OrderItem { Product = "Monitor", Quantity = 2 } } } }; var orderItems = orders.SelectMany(order => order.Items); // Kết quả: orderItems chứa danh sách tất cả các mục đơn hàng từ tất cả các đơn hàng.
5. Lấy giá trị riêng biệt dùng so sánh tùy chỉnh
Ví dụ gồm một danh sách các chuỗi không phân biệt chữ hoa chữ thường. Kết quả là các giá trị riêng biệt và bỏ qua phân biệt chữ hoa chữ thường.
var words = new List<string> { "apple", "Banana", "APPLE", "Cherry", "banana" }; var distinctIgnoreCase = words.Distinct(StringComparer.OrdinalIgnoreCase); // Kết quả: distinctIgnoreCase= [ "apple", "Banana", "Cherry" ]
Các ví dụ truy vấn LINQ này minh họa các hoạt động khác nhau, chẳng hạn như đếm các phần tử, bỏ qua và lấy, nhóm và tổng hợp, làm phẳng các tập lồng nhau, cùng với kết quả. DAMMIO.COM chúc bạn học tốt và nhớ đón xem phần tiếp theo nhé!
- APA:
Dammio. (2023). Ví dụ các câu truy vấn LINQ – Phần 2. https://www.dammio.com/2023/10/08/vi-du-cac-cau-truy-van-linq-phan-2.
- BibTeX:
@misc{dammio,
author = {Dammio},
title = {Ví dụ các câu truy vấn LINQ – Phần 2},
year = {2023},
url = {https://www.dammio.com/2023/10/08/vi-du-cac-cau-truy-van-linq-phan-2},
urldate = {2023-12-03}
}
[…] Đăng ngày: 08/10/2023 lúc 10:11:2609/10/2023 lúc 06:11:28 bởi dammio 12 lượt xem Thể loại: C#, Ngôn ngữ lập trình Trang mục lục Bài tiếp theo >> […]
[…] Thể loại: Lập trình Web, Lập trình Web với ASP.NET, LINQ << Bài trước Trang mục lục Bài tiếp theo […]