Có thể đếm được.Empty <T> () tương đương với IQueryable


130

Khi một phương thức trả về IEnumerable<T>và tôi không có gì để trả về, chúng ta có thể sử dụng Enumerable.Empty<T>().

Có tương đương như trên cho một phương thức trở lại IQueryable<T>

Câu trả lời:


206

Có lẽ:

Enumerable.Empty<T>().AsQueryable();

2
Tôi biết, hiện tại đó là giải pháp đơn giản, trực tiếp & bẩn ;-)
Numan

7
Thật không may, điều đó không tạo ra một IQueryable trống thực tế, điều đó có nghĩa là nó khiến Unioncác truy vấn được chia thành nhiều truy vấn thay vì một truy vấn.
NetMage

34

Enumerable.Empty<T>().AsQueryable(); Hãy làm nó.


8

Thử return new T[0].AsQueryable();


@Nauman - bạn thực sự tạo một mảng [trống] T - không có đối tượng mới nào của T thực sự được tạo.
zastrowm


1

Tôi sẽ khuyên chống lại câu trả lời của alejandrobog vì điều này vẫn sẽ sử dụng bộ nhớ để tạo ra một mảng trống.

Array.Empty<T>().AsQueryable();

hoặc là

Enumerable.Empty<T>().AsQueryable();

được ưa thích. Array.Empty sẽ phân bổ một mảng được gõ tĩnh để chỉ một mảng trống T được tạo và được chia sẻ giữa tất cả các truy vấn rỗng.


Array.Empty<T>chỉ khả dụng sau .NET Framework 4.6. Đối với các phiên bản cũ hơn, bạn có thể sử dụngnew object[0].Cast<T>()
TZU
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.