Linq trong C#

LINQ (Language Integrated Query) là một tính năng mạnh mẽ trong C# cho phép bạn truy vấn và thao tác với dữ liệu một cách dễ dàng và trực quan. LINQ hỗ trợ nhiều nguồn dữ liệu khác nhau như mảng, danh sách, cơ sở dữ liệu và XML.

  1. Định nghĩa Linq
  2. Các kiểu Linq hay sử dụng
  3. Cú pháp truy vấn Linq c#

 1. Định nghĩa Linq

Linq trong C# là một đối tượng được các lập trình viên cấp cao Microsoft tạo ra, từ đó các lập trình viên khác sử dụng thư viện này truy vấn dữ liệu từ các nguồn dữ liệu khác nhau, chủ yếu là các kiễu dữ liệu dạng array đối tượng, list.

Đối tượng trong lập trình c# Linq truy vấn là: Object Collection, XML, DataSet, SQL ...

Ví dụ 1: truy vấn dữ liệu từ 1 mảng 

int[] numbers = { 1, 4, 7, 10, 15, 20 };
        var evenNumbers = from n in numbers
                          where n % 2 == 0
                          select n;
        Console.WriteLine("Các số chẵn:");
        foreach (var n in evenNumbers)
        {
            Console.WriteLine(n);
        }

Ví dụ 2: truy vấn dữ liệu từ 1 List

// khai báo biến kiểu List
var DanhSachSo = new List<int>{5,7,8,2,1};
// truy vấn các giá trị trong biến DanhSachSo với điều kiện <5
var DanhSachSo_NhoHon5 = from  So in DanhSachSo
                       where So<5
                       select So;
// In các phần từ sau khi truy vấn <5
foreach(var so in DanhSachSo_NhoHon5 )
{
Console.WriteLine(so);
}

Đặt câu hỏi code

2. Các kiểu Linq hay sử dụng

LINQ to Objects

Truy vấn các tập hợp trong bộ nhớ như mảng hoặc danh sách, cụ thể là List, Array, Dictionary, v.v.

LINQ to SQL

Truy vấn cơ sở dữ liệu SQL Server, tham khảo chi tiết về Linq với Datatable

LINQ to XML

Truy vấn và thao tác với dữ liệu XML, truy vấn hoặc sửa đổi dữ liệu XML bằng cách dùng đối tượng

XDocument, XElement.

✅ Ví dụ:

using System.Xml.Linq;
XDocument doc = XDocument.Load("students.xml");
var names = from s in doc.Descendants("student")
            where (int)s.Element("age") > 18
            select s.Element("name").Value;
foreach (var name in names)
    Console.WriteLine(name);

📘 Lý do dùng: Giúp thao tác với XML như thể là truy vấn CSDL – dễ đọc, dễ viết hơn so với XML truyền thống (DOM, XPath...).

 

3. Cú pháp truy vấn Linq c#

Cách 1: cú pháp from where select

var bientrave =
from TenCot in BienDanhSach
where TenCot Biểu_thức_so_sánh
select TenCot

Nếu là kiểu object có nhiều thuộc tính

var bientrave =
from  Obj in BienDanhSachDoiTuong
where  Obj.TenCot Biểu_thức_so_sánh
select  Obj 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LinqVD1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            var dsNguoiDung = new List<NguoiDung>
            {
                new NguoiDung{Ten="A",MatKhau="123",Nhom="admin" },
                new NguoiDung{Ten="B",MatKhau="123",Nhom="user" },
                new NguoiDung{Ten="C",MatKhau="123",Nhom="user" }
            };

            // cách 1: lọc toàn bộ người dùng thuộc nhóm user
            var dsNguoiDung_User = from obj in dsNguoiDung
                                   where obj.Nhom == "user"
                                   select obj;
            foreach(var nguoidung in dsNguoiDung_User)
            {
                Console.WriteLine("Ten: "+ nguoidung.Ten);
            }
            // cách 2: dùng phương thức Where
            var dsNguoiDung_Admin = dsNguoiDung.Where(objNguoiDung => objNguoiDung.Nhom=="admin");
            foreach (var nguoidung in dsNguoiDung_Admin)
            {
                Console.WriteLine("Ten: " + nguoidung.Ten);
            }
            // Lấy giá trị 1 thuộc tính duy nhất
            //
            var dsNguoiDung_Admin_MK = dsNguoiDung.Where(objNguoiDung => objNguoiDung.Nhom == "admin")
                                        .Select(objS => objS.MatKhau);
            foreach (var mk in dsNguoiDung_Admin_MK)
            {
                Console.WriteLine("Mat khau: " + mk);
            }
        }
    }
    class NguoiDung
    {
        public string Ten { set; get; }
        public string MatKhau { set; get; }
        public string Nhom { set; get; }


    }
}


  

Cách 2: cú pháp sử dụng phương thức đã có từ Ling

DanhSachSo.where(TenCot=>TenCot Biểu_thức_so_sánh);
TenCot: tự người dùng định nghĩa


var DanhSachSo = new List<int>{5,7,8,2,1};
var sonho_5 = DanhSachS.where(so=>so<5);

Bài viết liên quan:

LINQ (Language Integrated Query) là một tính năng mạnh mẽ trong C# cho phép bạn truy vấn và thao tác với dữ liệu một cách dễ dàng và trực quan. LINQ hỗ trợ nhiều nguồn dữ liệu khác nhau như mảng, danh sách, cơ sở dữ liệu và XML.