Giới thiệu
Để truy cập hay truy vấn dữ liệu, chúng ta cần thông thạo các công nghệ như SQL, Web services, hay XML.
Linq được giới thiệu trong VS 2008 và được thiết kế bởi Anders Hejlsberg. Linq cho phép viết các truy vấn đến dữ liệu mà không cần bất kỳ kiến thức về SQL hay XML. Linq cũng cho phép viết với nhiều kiểu dữ liệu khác nhau.
Ví dụ về LINQ:
C#
// mảng chứa các từ string[] words = {"hello", "wonderful", "LINQ", "beautiful", "world"}; // lấy các từ có chiều dài nhỏ hơn hay bằng 5 bằng LINQ và lưu // vào mảng shortWords var shortWords = from word in words where word.Length <= 5 select word;
VB
' mảng chứa các từ Dim words As String() = {"hello", "wonderful", "LINQ", "beautiful", "world"} ' lấy các từ có chiều dài nhỏ hơn hay bằng 5 bằng LINQ và lưu ' vào mảng shortWords Dim shortWords = From word In words Where word.Length <= 5 Select word
Cú pháp LINQ
Linq có thể viết theo hai cách:
- Kiểu lambda (lambda syntax): dùng kết hợp biểu thức lambda (lambda expression)
C#
var shortWords = words.Where(w => w.Length <= 5);
VB
Dim shortWords = words.Where(Function(w) w.length <= 5)
- Kiểu truy vấn (query syntax): nếu chúng ta từng học các lệnh truy vấn trong ngôn ngữ SQL thì sẽ quen thuộc hơn với cú pháp này chỉ một chú ý là thứ tự các từ khoá select, from, where:
C#
var shortWords = from word in words // nguồn dữ liệu where word.Length <= 5 // điều kiện select word;// chọn nguồn dữ liệu thoả điều kiện để xử lý
VB
Dim shortWords = From word In words Where word.Length <= 5 Select word
Các kiểu LINQ
LINQ có các kiểu sau:
- LINQ to Objects
- LINQ to XML (XLINQ)
- LINQ to DataSet
- LINQ to SQL (DLINQ)
- LINQ to Entities
Kiến trúc LINQ trong .NET
Trong .NET, LINQ có kiến trúc 3 tầng như hình sau (nguồn MSDN):
Biểu thức truy vấn
Biểu thức truy vấn LINQ tương tự như biểu thức truy vấn trong ngôn ngữ SQL với các toán tử truy vấn như From, Where, v.v. Biểu thức truy vấn trong LINQ thường bắt đầu bằng From.
Để sử dụng các toán tử LINQ, namespace System.Query phải được khai báo.
Ưu điểm của LINQ
- Dễ dàng xử lý lỗi trong quá trình thiết kế.
- LINQ hỗ trợ IntelliSense.
- Viết mã nhanh hơn.
- Dễ debug với .NET Debugger.
- Có thể truy vấn đến nhiều nguồn dữ liệu chỉ với một cú pháp duy nhất.
- Xem mối quan hệ giữa hai bảng dễ dàng.
- Có thể truy vấn đến nhiều kiểu dữ liệu (XML, database, v.v.).
- Dễ dàng chuyển đổi từ kiểu dữ liệu này sang kiểu dữ liệu khác.
Ý kiến bài viết