#Notes: Có sự khác biệt gì khi method trả về một IQueryable với IList?

 IEnumerable nằm trong namespace System.Collections

IEnumerable là một list hay contatiner giữ các item chỉ hỗ trợ filter nhưng không thể chỉnh sửa các item như thêm, xoá, sửa, đếm...
IQueryable, IList, IDictionary, ICollection kế thừa IEnumerable Interface.

- ICollection là interface cơ bản nhất trong số các interface đã liệt kê.
Đó là một interface có thể đếm được hỗ trợ Count và đó là về nó.
- IList kế thừa IEnumerable và ICollection, nhưng nó cũng hỗ trợ thêm và xóa các mục, truy xuất các mục theo chỉ mục...
Đó là giao diện được sử dụng phổ biến nhất cho "danh sách các đối tượng", điều mà tôi biết.
- IQueryable là một interface có thể liệt kê hỗ trợ LINQ.
Bạn luôn có thể tạo IQueryable từ IList và sử dụng LINQ tới Objects, nhưng bạn cũng thấy IQueryable được sử dụng để thực hiện hoãn lại các câu lệnh SQL trong LINQ to SQL và LINQ to Entities.
- IDictionary là một interface khác với ánh xạ các khóa duy nhất đến các giá trị.

IQueryable
+ IQueryable tốt nhất cho truy vấn dữ liệu out-memory như là database.
+ Khi truy vấn, IQueryable thực thi câu lệnh truy vấn và lọc dữ liệu trên Server luôn.
+ IQueryable hỗ trợ lazy loading. Vì thế nó phù hợp cho trường hợp phân trang.
+ IQueryable hỗ trợ custom query sử dụng phương thức CreateQuery và Execute.

Share:

0 nhận xét