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 ...
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);
}
// 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);
}
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.
Truy vấn cơ sở dữ liệu SQL Server, tham khảo chi tiết về Linq với Datatable
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...).
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; }
}
}
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);
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.