Cấp bậc tác giả:

TRAINING

So sánh IQueryable và IEnumerable trong C#

Được viết bởi webmaster ngày 20/03/2023 lúc 10:17 AM
Cả IQueryable và IEnumerable là các interface trong C# để thao tác với các tập hợp dữ liệu. Tuy nhiên, chúng có một số khác biệt quan trọng về cách thức truy vấn và lấy dữ liệu từ nguồn dữ liệu.
  • 0
  • 2277

So sánh IQueryable và IEnumerable trong C#

Cả IQueryable và IEnumerable là các interface trong C# để thao tác với các tập hợp dữ liệu. Tuy nhiên, chúng có một số khác biệt quan trọng về cách thức truy vấn và lấy dữ liệu từ nguồn dữ liệu.
IEnumerable là một interface đơn giản nhất trong số các interface thao tác với tập hợp dữ liệu. Nó cung cấp các phương thức để lấy dữ liệu từ một tập hợp dữ liệu, nhưng không cung cấp các phương thức để truy vấn hoặc lọc dữ liệu trước khi lấy.
Ví dụ:
IEnumerable<int> numbers = new List<int>{1, 2, 3, 4, 5};

// Lấy các số chẵn trong danh sách bằng vòng lặp
List<int> evenNumbers = new List<int>();
foreach (int number in numbers)
{
    if (number % 2 == 0)
    {
        evenNumbers.Add(number);
    }
}
Tuy nhiên, khi sử dụng IQueryable, ta có thể truy vấn và lọc dữ liệu trước khi lấy, đồng thời quyết định lấy các thuộc tính nào của đối tượng. Điều này giúp giảm tải cho máy chủ và cải thiện hiệu suất truy vấn dữ liệu.
Ví dụ:
IQueryable<int> numbers = new List<int>{1, 2, 3, 4, 5}.AsQueryable();

// Lấy các số chẵn trong danh sách bằng truy vấn
var evenNumbers = numbers.Where(n => n % 2 == 0).ToList();
Như vậy, sự khác biệt chính giữa IQueryable và IEnumerable là IQueryable cho phép truy vấn và lọc dữ liệu trước khi lấy, trong khi IEnumerable chỉ cung cấp phương thức để lấy dữ liệu. Tuy nhiên, sử dụng IQueryable có thể tốn nhiều tài nguyên hơn và không phù hợp trong một số trường hợp nhất định.
Một số trường hợp khi sử dụng IEnumerable thích hợp hơn IQueryable là:
  1. Khi bạn chỉ cần lấy toàn bộ dữ liệu từ nguồn dữ liệu mà không cần xử lý hay lọc dữ liệu trước khi lấy.
  2. Khi tập dữ liệu không lớn và không cần phải tối ưu hiệu suất truy vấn.
  3. Khi dữ liệu được lưu trữ trong bộ nhớ và không phải truy vấn từ một nguồn dữ liệu bên ngoài, chẳng hạn như một danh sách trong bộ nhớ hoặc một mảng.
  4. Khi bạn cần sử dụng các phương thức mở rộng của IEnumerable như ToList(), ToArray(), hoặc Count() để xử lý dữ liệu.
Trong những trường hợp trên, sử dụng IQueryable có thể không cần thiết và có thể làm giảm hiệu suất hoặc tăng tải cho máy chủ. Tuy nhiên, khi tập dữ liệu lớn và cần phải tối ưu truy vấn, sử dụng IQueryable sẽ giúp cải thiện hiệu suất và giảm tải cho máy chủ.

Nguồn bài viết: DOTNET.VN

BÌNH LUẬN BÀI VIẾT

Bài viết mới nhất

LIKE BOX

Bài viết được xem nhiều nhất

HỌC HTML