Môi trường
Để dùng LINQ chúng ta phải cài đặt .NET FrameWork và LINQ có thể được viết bởi ngôn ngữ C# hay VB. Có hai công cụ phổ biến chúng ta có thể dùng khi làm việc với LINQ:
Viết truy vấn LINQ
Các thao tác truy vấn LINQ bao gồm 3 phần:
- Nguồn dữ liệu (the data source): mảng, danh sách, XML, database, …
- Tạo truy vấn (create the query): dùng các biểu thức truy vấn
- Thực thi truy vấn (execute the query): hiển thị kết quả truy vấn
Mối quan hệ 3 phần có thể trực quan như hình sau (nguồn MSDN):

Thực thi truy vấn
Có hai cách thực thi truy vấn:
- Thực thi trì hoãn (deferred execution): truy vấn không thực thi cho đến khi chúng ta dùng vòng lặp duyệt qua danh sách các phần tử trả về của truy vấn, do đó, kết quả truy vấn có thể thay đổi trước khi vòng lặp thực thi. Đây là đặc trưng rất mạnh trong LINQ và là cách thực thi mặc định.
- Thực thi ngay lập tức (Forcing Immediate Execution): thực hiện truy vấn ngay tại quá trình tạo truy vấn, do đó, kết quả không thay đổi sau khi lệnh tạo truy vấn hoàn tất. Có thể dùng kết hợp các phương thức mở rộng như ToArray hay ToList.
Thực thi trong môi trường:
Ví dụ C#: sử dụng thực thi trì hoãn
// 1. Nguồn dữ liệu: mảng words chứa các chuỗi
string[] words = {"hello", "wonderful", "LINQ", "beautiful", "world"};
// 2. Tạo truy vấn
var shortWords = from word in words
where word.Length <= 5
select word;
// 3. Thực thi truy vấn
foreach (var word in shortWords)
{
Console.WriteLine(word);
}
Ví dụ VB: sử dụng thực thi trì hoãn
' 1. Nguồn dữ liệu: mảng words chứa các chuỗi
Dim words As String() = {"hello", "wonderful", "LINQ", "beautiful", "world"}
' 2. Tạo truy vấn
Dim shortWords = From word In words
Where word.Length <= 5
Select word
' 3. Thực thi truy vấn
For Each word In shortWords
Console.WriteLine(word)
Next
Ví dụ C#: sử dụng thực thi ngay lập tức
// 1. Nguồn dữ liệu: mảng words chứa các chuỗi
string[] words = {"hello", "wonderful", "LINQ", "beautiful", "world"};
// 2. Tạo truy vấn
var shortWords = (from word in words
where word.Length <= 5
select word).ToArray();
// 3. Thực thi truy vấn
Console.WriteLine(shortWords);
Ví dụ VB: sử dụng thực thi ngay lập tức
' 1. Nguồn dữ liệu: mảng words chứa các chuỗi
Dim words As String() = {"hello", "wonderful", "LINQ", "beautiful", "world"}
' 2. Tạo truy vấn
Dim shortWords = (From word In words
Where word.Length <= 5
Select word).ToArray()
' 3. Thực thi truy vấn
Console.WriteLine(shortWords)