Trong LINQ, sự khác biệt giữa việc trả về IQueryable<T>
và IEnumerable<T>
là gì?
Trong LINQ, sự khác biệt giữa việc trả về IQueryable<T>
và IEnumerable<T>
là gì?
Trong LINQ (Language Integrated Query), hai interface phổ biến là IQueryable<T>
và IEnumerable<T>
. Mỗi interface này đều hỗ trợ việc lặp qua một tập hợp các phần tử, nhưng chúng được thiết kế để phục vụ cho các mục đích khác nhau và có những đặc điểm quan trọng cần lưu ý:
IEnumerable<T>
IEnumerable<T>
, tất cả dữ liệu được truy vấn sẽ được tải vào bộ nhớ của client và tất cả các thao tác (như lọc, sắp xếp) được thực hiện trên client. Điều này có thể dẫn đến hiệu suất kém nếu tập dữ liệu là lớn.IEnumerable<T>
sử dụng LINQ to Objects, nghĩa là các truy vấn được thực hiện như các thao tác trên bộ sưu tập trong bộ nhớ.IEnumerable<T>
được thực hiện bằng cách sử dụng cú pháp của C# hoặc VB.NET và không phụ thuộc vào nguồn dữ liệu cụ thể.IQueryable<T>
IQueryable<T>
cho phép truy vấn được xây dựng và thực thi trên server (ví dụ: cơ sở dữ liệu SQL). Chỉ các kết quả cuối cùng mới được truyền về client. Điều này giúp tăng hiệu suất đáng kể khi làm việc với các tập dữ liệu lớn.IQueryable<T>
sử dụng LINQ to SQL hoặc LINQ to Entities, tùy thuộc vào nguồn dữ liệu. Truy vấn được biểu diễn dưới dạng biểu thức, khô...middle
Gợi ý câu hỏi phỏng vấn
Chưa có bình luận nào