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)
Ý kiến bài viết