Câu hỏi phỏng vấn LINQ
Câu hỏi

Trong LINQ, sự khác biệt giữa việc trả về IQueryable<T>IEnumerable<T> là gì?

Câu trả lời

Trong LINQ (Language Integrated Query), hai interface phổ biến là IQueryable<T>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 ý:

1. IEnumerable<T>

  • Xử lý trên client: Khi bạn sử dụng 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.
  • Phương thức mở rộng: Các phương thức mở rộng cho 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ớ.
  • Kiểu truy vấn: Truy vấn trên 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ể.

2. IQueryable<T>

  • Xử lý trên server: 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.
  • Phương thức mở rộng: Các phương thức mở rộng cho 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

middle

Gợi ý câu hỏi phỏng vấn

middle

Cây biểu thức (Expression Trees) là gì và chúng được sử dụng như thế nào trong LINQ?

senior

Khi sử dụng Entity FrameworkLINQ to SQL như một ORM thì sự khác biệt là gì?

middle

Giải thích tại sao câu lệnh SELECT lại sau câu lệnh FROM trong LINQ?

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào