Iqueryable Là Gì
Nlỗi họ đang biết, LINQ - Ngôn ngữ truy hỏi vấn tích đúng theo, được thực hiện để truy vấn vấn dữ liệu xuất phát từ một tập đúng theo tài liệu. Tập thích hợp tài liệu có thể là trong cơ sở dữ liệu hoặc collection bên trên bộ lưu trữ... Lúc thực hiện LINQ, bọn họ có lẽ bắt gặp Việc thực hiện IEnumerable với IQueryable không ít dẫu vậy lại chưa biết được sự khác biệt giữa bọn chúng. Trong nội dung bài viết này, tôi đã chia sẻ cùng với chúng ta một trong những điểm xem xét khi sử dụng 2 interface trên.
Bạn đang xem: Iqueryable là gì
Bài toán đặt ra
Để thấy được sự khác hoàn toàn giữa 2 interface trên tôi đã sử dụng LINQ vào bài toán truy hỏi vấn tài liệu từ các đại lý tài liệu (Sql Server). Tôi gồm bảng Users với dữ liệu như sau:
Sự không giống nhau giữa IEnumerable cùng IQueryable
Về tư tưởng của IEnumerable, tôi đã gồm bài xích ra mắt về nó. Các chúng ta cũng có thể tham khảo trên trên đây.Về quan niệm của IQueryable, được implement từ bỏ IEnumerable cần IQueryable tất cả tất cả các công dụng của IEnumerable cùng các đặc tính của riêng nó. Cả 2 interface này khôn cùng đặc biệt trong quá trình truy hỏi vấn và làm việc tới tài liệu. Chúng ta hãy coi sự không giống nhau thân 2 interface qua bảng dưới đây.
Item | IEnumerable | IQueryable |
Namespace | System.Collections | System.Linq |
Duyệt phần tử | Duyệt thành phần theo hướng tiến lên. | Duyệt thành phần theo hướng tiến lên. |
Truy vấn giỏi nhất | Truy vấn tốt nhất đối với hồ hết tài liệu bên trên bộ nhớ lưu trữ như List, Array... | Truy vấn cực tốt đối với rất nhiều dữ liệu ở quanh đó bộ nhớ lưu trữ như cơ sở dữ liệu. |
Cách thức tầm nã vấn | Truy vấn bên trên VPS cùng trả về tài liệu mang lại client. Client sau đấy bắt đầu liên tiếp thanh lọc tài liệu. | Truy vấn và lọc dữ liệu bên trên VPS cùng dữ liệu trả về đến client. |
Chúng ta hãy suy nghĩ phương pháp tróc nã vấn qua đoạn mã sau:
class Program static void Main(string<> args) var entities = new DataEntities(); // Kân hận 1 var enumerableUsers = entities.Users.AsEnumerable().Where(f => f.UserId >= 5).Take(2); foreach (var cửa nhà in enumerableUsers) Console.WriteLine(chiến thắng.UserId); // Kăn năn 2 var queryableUsers = entities.Users.Where(f => f.UserId >= 5).Take(2); foreach (var item in queryableUsers) Console.WriteLine(thành tích.UserId); Console.ReadKey(); Cả 2 phần tìm kiếm tìm phần đông trả về kết quả là:
56Giờ bọn họ hãy msinh sống Sql Profile và thấy Sql Engine triển khai 2 câu lệnh nhỏng sau:
SELECT
Xem thêm: Một Số Biện Pháp Tổ Chức Trò Chơi Tung Cao Hơn Nữa Archives, Trò Chơi Vận Động: Tung Cao Hơn Nữa
SELECT TOPhường (2)
Xem thêm: ©️ Cách Tải Avatar Star Online Pc: Bản 2020 Mới Nhất, Download Avatar Star
Tạm kết
Đến phía trên chúng ta đã và đang đọc sự khác nhau giữa IEnumerable và IQueryable. Rất muốn sự góp ý nhỏ tuổi của mình sẽ hữu ích cho chúng ta.