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, fromwhere:

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.

< Học LINQ