Ngôn ngữ truy vấn tích hợp (tiếng Anh: Language Integrated Query, viết tắt LINQ) là một thành phần của .NET và .NET Framework cung cấp khả năng truy vấn cấp độ ngôn ngữ và cùng các hàm API truy vấn bậc cao trên C# và Visual Basic.[1]
Cú pháp lệnh LINQ có nhiều điểm tương đồng với ngôn ngữ truy vấn SQL nhưng được tích hợp gốc (native) trong ngôn ngữ lập trình.[2][3] Lệnh truy vấn trên LINQ trên C# có dạng:
var linqExperts = from p in programmers
where p.IsNewToLINQ
select new LINQExpert(p);
Trên ngôn ngữ Visual Basic:
Dim countries = From cust In customers
Order By cust.Country, cust.City
Group By CountryName = cust.Country
Into CustomersInCountry = Group, Count()
Order By CountryName
Nói chung LINQ hỗ trợ hầu hết các Toán tử truy vấn tiêu chuẩn (SQO) như Select, Where, Group by...[4]
Trong LINQ to SQL, mô hình dữ liệu của cơ sở dữ liệu quan hệ được ánh xạ tới mô hình đối tượng được và được truy vấn thao tác trên Ngôn ngữ truy vấn tích hợp ngay trong C# hoặc VB.NET. Khi ứng dụng chạy, LINQ to SQL tự động dịch sang ngôn ngữ SQL các truy vấn được tích hợp Ngôn ngữ truy vấn tích hợp và gửi chúng đến cơ sở dữ liệu để thực thi. Khi cơ sở dữ liệu trả về kết quả, LINQ to SQL lại dịch chúng trở lại các đối tượng mà bạn có thể làm việc bằng ngôn ngữ lập trình của riêng mình.[5]
// Kết nối đến CSDL thông qua DataContext
DataContext db = new DataContext(@"c:\linqtest\northwnd.mdf");
// Tạo kiểu bảng Customer để phục vụ truy vấn
Table<Customer> Customers = db.GetTable<Customer>();
// Truy vấn đến bảng dữ liệu Customer để tìm các khách hàng từ London
IQueryable<Customer> custQuery =
from cust in Customers
where cust.City == "London"
select cust;
LINQ to XML cung cấp giao diện lập trình XML trong bộ nhớ giúp Truy vấn tích hợp ngôn ngữ trên.NET (LINQ) thao tác trên các dữ liệu dạng XML. LINQ to XML cung cấp khả năng cho phép.NET có thể cập nhật, cấu trúc lại và truy vấn dữ liệu ở dạng Mô hình đối tượng văn bản (DOM).[6]
// Lấy thông tin từ tệp văn bản dạng XML (PurchaseOrder.xml) chứa dữ liệu về đơn hàng đã thanh toán
var filename = "PurchaseOrder.xml";
var currentDirectory = Directory.GetCurrentDirectory();
var purchaseOrderFilepath = Path.Combine(currentDirectory, filename);
XElement purchaseOrder = XElement.Load(purchaseOrderFilepath);
IEnumerable<string> partNos = from item in purchaseOrder.Descendants("Item")
select (string) item.Attribute("PartNumber");
Ngôn ngữ truy vấn tích hợp song song (PLINQ) là một triển khai song song của Truy vấn tích hợp ngôn ngữ (LINQ) để tận dụng sức mạnh của lập trình song song (parallel programming). PLINQ triển khai tập hợp đầy đủ các toán tử truy vấn tiêu chuẩn như LINQ ngoài ra còn có các toán tử bổ sung cho các hoạt động song song. PLINQ kết hợp sự đơn giản và dễ đọc của cú pháp LINQ với sức mạnh của lập trình song song.[7]
// Thực hiện truy vấn song song
var query = from item in source.AsParallel().WithDegreeOfParallelism(2)
where Compute(item) > 42
select item;