Численні.Порожній еквівалент <T> () для IQueryable


130

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

Чи існує еквівалент вищезазначеному для повернення методу IQueryable<T>

Відповіді:


206

Може бути:

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

2
Я знаю, на даний момент це єдине просте, прямо і брудне рішення ;-)
Numan

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.