Kết nối

Ví dụ các câu truy vấn LINQ – Phần 2

114 lượt xem 
 Cập nhật lần cuối: 09/10/2023 lúc 19:03:56

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é!

Liên quan:  [LINQ và chuỗi] Phần 5: Tìm sự khác biệt giữa hai danh sách List
Trích dẫn bài viết
  • 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 = {2024-05-15}
    }
Theo dõi
Thông báo của
guest
2 Góp ý
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận
trackback

[…]  Đă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 >> […]

trackback

[…]   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 […]

2
0
Rất thích suy nghĩ của bạn, hãy bình luận.x