Ngôn ngữ LINQ - LINQ API

LINQ API

Chúng ta có thể viết các truy vấn LINQ cho các lớp triển khai interface IEnumerable<T> hoặc IQueryable<T>. Namespace System.Linq bao gồm các lớp và interface sau đây được yêu cầu cho các truy vấn LINQ.

LINQ class diagram

Các truy vấn LINQ sử dụng các phương thức mở rộng cho các lớp triển khai interface IEnumerable hoặc IQueryable. Hai lớp static EnumerableQueryable có chứa các phương thức mở rộng để viết các truy vấn LINQ.

Lưu ý: using System.Linq; đã được thêm vào khai báo lớp theo mặc định khi bạn thêm một lớp mới trong Visual Studio.

Enumerable

Lớp Enumerable bao gồm các phương thức mở rộng cho các lớp triển khai interface IEnumerable<T>, ví dụ như tất cả các kiểu collection generic được tích hợp sẵn trong C# đều triển khai interface IEnumerable<T> và vì vậy chúng ta có thể viết các truy vấn LINQ để lấy dữ liệu từ các collection tích hợp này.

Hình dưới đây cho thấy các phương thức mở rộng có trong lớp Enumerable có thể được sử dụng với các collection generic trong C# hoặc VB.Net.

Các phương thức mở rộng của lớp Enumerable

Hình dưới đây cho thấy tất cả các phương thức mở rộng có sẵn trong lớp Enumerable.

Tất cả các phương thức mở rộng có sẵn trong lớp Enumerable

Queryable

Lớp Queryable bao gồm các phương thức mở rộng cho các lớp triển khai interface IQueryable<T>. Interface IQueryable<T> được sử dụng để cung cấp khả năng truy vấn đối với một nguồn dữ liệu cụ thể mà các kiểu dữ liệu đã được biết đến. Ví dụ, các API của Entity Framework triển khai interface IQueryable<T> để hỗ trợ các truy vấn LINQ với cơ sở dữ liệu bên dưới như MS SQL Server.

Ngoài ra, còn có các API có sẵn để truy cập dữ liệu của bên thứ ba; ví dụ: LINQ to Amazon cung cấp khả năng sử dụng LINQ với các web service của Amazon để tìm kiếm sách và các mặt hàng khác. Điều này có thể đạt được bằng cách triển khai interface IQueryable cho Amazon.

Hình dưới đây cho thấy các phương thức mở rộng có sẵn trong lớp Queryable có thể được sử dụng với các nhà cung cấp dữ liệu gốc hoặc bên thứ ba khác nhau.

Các phương thức mở rộng của lớp Queryable

Hình dưới đây cho thấy tất cả các phương thức mở rộng có sẵn trong lớp Queryable.

Tất cả các phương thức mở rộng có sẵn trong lớp Queryable

Những điểm cần nhớ:

  1. Sử dụng namespace System.Linq để sử dụng LINQ.
  2. LINQ API bao gồm hai lớp tĩnh chính Enumerable và Queryable.
  3. Lớp Enumerable tĩnh bao gồm các phương thức mở rộng cho các lớp triển khai interface IEnumerable<T>.
  4. Kiểu IEnumerable<T> là collection trong bộ nhớ như List<T>, Dictionary<TKey, TValue>, SortedList<TKey, TValue>, Queue<T>, Stack<T>, Hashset<T>.
  5. Lớp Queryable tĩnh bao gồm các phương thức mở rộng cho các lớp triển khai interface IQueryable<T>.