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:

*
Bài toán thù đặt ra là hãy tra cứu những user bao gồm UserId >= 5.Tôi sử dụng Sql Server Protệp tin nhằm khẳng định câu lệnh truy vấn được gửi từ client tới server.

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.

ItemIEnumerableIQueryable
NamespaceSystem.CollectionsSystem.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ấtTruy 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ấnTruy 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 . AS , . AS , .

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

AS , . AS , . AS FROM . AS khi triển khai Kân hận 1.

SELECT TOPhường (2) . AS , . AS , . AS , . AS , . AS FROM . AS WHERE . >= 5Lúc thực hiện Khối 2.Khi sử dụng IEnumerable, câu lệnh truy vấn vấn sẽ triển khai trên máy chủ và trả về tài liệu cho client. Sau khi trả hết tài liệu, client mới triển khai đem 2 bản ghi thứ nhất.lúc thực hiện IQueryable, câu lệnh tầm nã vấn sẽ thực hiện trên máy chủ, lọc trên sever cùng trả tài liệu mang đến client.Trong điều kiện số bạn dạng ghi của bảng Users to thì câu hỏi sử dụng IEnumerable đang ảnh hưởng rất nhiều tới tính năng của ứng dụng cũng tương tự của Sql Server.

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.