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)

< Học LINQ