Getting started with LINQ in C# - Episode 1: Introduction to LINQ Queries
Như chúng ta đã biết từ môn Cơ sở dữ liệu, query (truy vấn) là một câu diễn đạt dùng để get dữ liệu từ một data source. Query thường được dùng trong các ngôn ngữ truy vấn như SQL trong hệ cơ sở dữ liệu của Microsoft, hay XQuery dùng trong XML. Vì vậy, người lập trình cần phải học thêm các ngôn ngữ truy vấn cho mỗi loại nguồn dữ liệu hoặc định dạng dữ liệu mà họ đang làm việc. LINQ được xây dựng để đơn giản hóa vấn đề này. Trong LINQ query, bạn luôn luôn làm việc với các object. Bạn sẽ dùng cùng một mẫu code nền tảng giống nhau để truy vấn và thao tác với các dữ liệu trong XML documents, SQL databases, ADO.NET Datasets, .NET collection…
Ba phần của một query operation
Tất cả mọi truy vấn LINQ đều phải thực hiện 3 hành động riêng biệt
-
Xác định nguồn dữ liệu (Obtain the data source)
-
Tạo câu truy vấn (Create the query)
-
Thực thi câu truy vấn (Execute the query)
Ví dụ dưới đây sẽ mô tả 3 phần của một query operation.
Như các bạn thấy, trong LINQ, câu thực thi truy vấn được tách biệt khỏi lệnh truy vấn dữ liệu, nghĩa là nếu bạn chỉ tạo một biến truy vấn, bạn sẽ không thể nhận được bất kì dữ liệu nào.
The Data Source
Trong ví dụ trước, bởi vị nguồn dữ liệu sử dụng là một array, nên tất nhiên nó có hỗ trợ IEnumerable
Hoặc đối với SQL database:
Nói chung, bất kì đối tượng nào hỗ trợ giao diện IEnumerable
#
The Query
Câu truy vấn sẽ xác định thông tin nào cần phải lấy ra từ data sources. Một câu truy vấn còn có thể xác định loại thông tin lấy ra phải được sắp xếp, gom nhóm như thế nào (tương tự như SQL, tuy nhiên cần lưu ý là thứ tự của các clause này khác với thứ tự trong SQL). Mệnh đều from sẽ xác định data source, mệnh đề where sẽ lọc thông tin và mệnh đề select sẽ xác định kiểu của thông tin trả về. Một vấn đề quan trọng đã được đề cập từ trước: trong LINQ, các biến truy vấn không thể tự nó trả về dữ liệu được. Nó chỉ lưu trữ thông tin được truy vấn và sau này, khi câu truy vấn được thực thi sẽ cho ra kết quả.
#
Query Execution
Như đã đề cập trước đó, query variable chỉ lưu trữ các thông tin lấy ra từ data source. Bạn sẽ lấy các thông tin từ biến truy vấn trước đó thông qua câu lệnh foreach.
Nguồn: MSDN
Comments powered by Disqus.