Enumerable.Empty <T> () эквивалент для IQueryable


130

Когда метод возвращается, IEnumerable<T>и мне нечего возвращать, мы можем использовать Enumerable.Empty<T>().

Есть ли эквивалент приведенному выше для метода, возвращающего IQueryable<T>

Ответы:


206

Может быть:

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

2
Я знаю, что в настоящее время это единственное простое, прямое и грязное ;-) решение
Нуман

7
К сожалению, при этом не создается фактический пустой IQueryable, а это означает, например, что Unionзапросы разбиваются на несколько запросов вместо одного.
NetMage


8

Пытаться return new T[0].AsQueryable();


@Nauman - вы фактически создаете [пустой] массив T - фактически новый объект T не создается.
zastrowm


1

Я бы посоветовал отказаться от ответа alejandrobog, поскольку он все равно будет использовать память для создания пустого массива.

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

или

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

являются предпочтительными. Array.Empty выделит статический типизированный массив, поэтому будет создан только один пустой массив T, который будет использоваться всеми пустыми запросами.


Array.Empty<T>доступен только после .NET Framework 4.6. Для более ранних версий можно использоватьnew object[0].Cast<T>()
TZU
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.