Enumerable.Empty <T> () equivalente para IQueryable


130

Cuando un método regresa IEnumerable<T>y no tengo nada que devolver, podemos usarlo Enumerable.Empty<T>().

¿Hay un equivalente al anterior para un método que devuelve IQueryable<T>

Respuestas:


206

Tal vez:

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

2
Lo sé, actualmente esa es la única solución simple, directa y sucia ;-)
Numan

77
Desafortunadamente, eso no crea un IQueryable vacío real, lo que significa que, por ejemplo, las Unionconsultas se dividen en múltiples consultas en lugar de una.
NetMage

34

Enumerable.Empty<T>().AsQueryable(); Deberías hacerlo.


8

Tratar return new T[0].AsQueryable();


@Nauman: en realidad creas una matriz T [vacía], en realidad no se crea ningún objeto nuevo de T.
zastrowm


1

Aconsejaría contra la respuesta de alejandrobog ya que esto todavía usará memoria para crear una matriz vacía.

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

o

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

son preferidos Array.Empty asignará una matriz tipada estática para que solo se cree una matriz vacía de T y se comparta entre todas las consultas vacías.


Array.Empty<T>solo está disponible después de .NET Framework 4.6. Para versiones anteriores, puede usarnew object[0].Cast<T>()
TZU
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.