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.
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 Enumerable
và Queryable
có chứa các phương thức mở rộng để viết các truy vấn LINQ.
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.
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
.
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.
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
.
Những điểm cần nhớ:
- Sử dụng namespace System.Linq để sử dụng LINQ.
- LINQ API bao gồm hai lớp tĩnh chính Enumerable và Queryable.
- 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>.
- Kiểu IEnumerable<T> là collection trong bộ nhớ như List<T>, Dictionary<TKey, TValue>, SortedList<TKey, TValue>, Queue<T>, Stack<T>, Hashset<T>.
- 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>.