35 LINQ

LINQ (Language Integrated Query) là một tính năng mạnh mẽ trong C#, cho phép tích hợp các truy vấn dữ liệu trực tiếp vào ngôn ngữ lập trình. Điều này giúp truy cập và thao tác với các nguồn dữ liệu khác nhau như cơ sở dữ liệu SQL, XML, hoặc các bộ sưu tập trong bộ nhớ (collections) một cách nhất quán và hiệu quả.

1. Giới thiệu về LINQ

LINQ cung cấp cú pháp truy vấn tương tự SQL, tích hợp trực tiếp vào C#, giúp lập trình viên viết các truy vấn dữ liệu một cách tự nhiên và dễ hiểu. Để sử dụng LINQ, cần nạp các namespace sau:

using System.Collections.Generic;
using System.Linq;

2. Các thành phần cơ bản của truy vấn LINQ

  • Mệnh đề from: Xác định nguồn dữ liệu và biến đại diện cho mỗi phần tử.
var query = from item in collection
            ...
  • Mệnh đề select: Chọn các giá trị cần truy xuất trong kết quả.
var query = from item in collection
            select item.Property;
  • Mệnh đề where: Lọc các phần tử dựa trên điều kiện nhất định.
var query = from item in collection
            where item.Property == value
            select item;
  • Mệnh đề orderby: Sắp xếp kết quả theo thứ tự tăng dần hoặc giảm dần.
var query = from item in collection
            orderby item.Property ascending
            select item;
  • Mệnh đề group ... by: Nhóm các phần tử có cùng giá trị của một thuộc tính.
var query = from item in collection
            group item by item.Property;
  • Mệnh đề join: Kết hợp các nguồn dữ liệu dựa trên một khóa chung.
var query = from item1 in collection1
            join item2 in collection2
            on item1.Key equals item2.Key
            select new { item1, item2 };

3. Ví dụ minh họa

Giả sử có một danh sách các sinh viên, chúng ta sẽ sử dụng LINQ để truy vấn các sinh viên có điểm trung bình lớn hơn 7 và sắp xếp theo tên:

using System;
using System.Collections.Generic;
using System.Linq;

public class SinhVien
{
    public string HoTen { get; set; }
    public double DiemTrungBinh { get; set; }
}

public class Program
{
    public static void Main()
    {
        var sinhViens = new List<SinhVien>
        {
            new SinhVien { HoTen = "Nguyen Van A", DiemTrungBinh = 8.5 },
            new SinhVien { HoTen = "Tran Thi B", DiemTrungBinh = 6.5 },
            new SinhVien { HoTen = "Le Van C", DiemTrungBinh = 7.5 }
        };

        var query = from sv in sinhViens
                    where sv.DiemTrungBinh > 7
                    orderby sv.HoTen
                    select sv;

        foreach (var sv in query)
        {
            Console.WriteLine($"{sv.HoTen} - {sv.DiemTrungBinh}");
        }
    }
}

Kết quả:

Le Van C - 7.5
Nguyen Van A - 8.5

4. Lợi ích của việc sử dụng LINQ

  • Tính nhất quán: Cung cấp một cú pháp chung để truy vấn nhiều loại nguồn dữ liệu khác nhau.
  • Tính an toàn: Các truy vấn được kiểm tra tại thời điểm biên dịch, giảm thiểu lỗi runtime.
  • Dễ đọc và bảo trì: Cú pháp truy vấn tương tự SQL giúp mã nguồn dễ hiểu và dễ bảo trì.

Việc nắm vững LINQ sẽ giúp bạn thao tác với dữ liệu trong C# một cách hiệu quả và linh hoạt hơn.

Để lại một bình luận 0

Your email address will not be published. Required fields are marked *