Computer >> Máy Tính >  >> Lập trình >> C#

Sự khác biệt giữa IEnumerable và IQueryable trong C # là gì?


  • IEnumerable tồn tại trong Không gian tên System.Collections.
  • IQueryable tồn tại trong Hệ thống. Linq Namespace.
  • Cả IEnumerable và IQueryable đều là bộ sưu tập chuyển tiếp.
  • IEnumerable không hỗ trợ tải chậm
  • IQueryable hỗ trợ tải chậm
  • Truy vấn dữ liệu từ cơ sở dữ liệu, IEnumerable thực hiện một truy vấn chọn lọc ở phía máy chủ, tải dữ liệu trong bộ nhớ ở phía máy khách rồi lọc dữ liệu.
  • Truy vấn dữ liệu từ cơ sở dữ liệu, IQueryable thực hiện truy vấn chọn lọc ở phía máy chủ với tất cả các bộ lọc.
  • Các phương thức Tiện ích mở rộng IEnumerable sử dụng các đối tượng chức năng.
  • Phương thức mở rộng IQueryable sử dụng các đối tượng biểu thức có nghĩa là cây biểu thức.

Ví dụ

IEnumerable

dbContext dc = new dbContext ();
IEnumerable
<SocialMedia>
list = dc.SocialMedias.Where(p => p.Name.StartsWith("T"));
list = list.Take<SocialMedia>(1);
</SocialMedia>

Câu lệnh Sql được tạo cho truy vấn trên

SELECT [t0].[ID], [t0].[Name] FROM [SocialMedia] AS [t0]
WHERE [t0].[Name] LIKE @p0

IQueryable

dbContext dc = new dbContext ();
IQueryable<SocialMedia> list = dc.SocialMedias.Where(p => p.Name.StartsWith("T"));
list = list.Take<SocialMedia>(1);

Câu lệnh Sql được tạo cho truy vấn trên

SELECT top 1 [t0].[ID], [t0].[Name] FROM [SocialMedia] AS [t0]
WHERE [t0].[Name] LIKE @p0