Enumerable.Empty <T> () equivalente per IQueryable


130

Quando un metodo ritorna IEnumerable<T>e non ho nulla da restituire, possiamo usare Enumerable.Empty<T>().

Esiste un equivalente di quanto sopra per un metodo di ritorno IQueryable<T>

Risposte:


206

Può essere:

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

2
Lo so, al momento questa è l'unica soluzione semplice, diretta e sporca ;-)
Numan,

7
Sfortunatamente ciò non crea un IQueryable vuoto effettivo, il che significa che, ad esempio, le Unionquery vengono suddivise in più query anziché in una.
NetMage,

34

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


8

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


@Nauman - in realtà crei un array T [vuoto] - non viene creato alcun nuovo oggetto di T.
zastrowm,


1

Vorrei sconsigliare la risposta di Alejandrobog poiché questa utilizzerà ancora la memoria per creare un array vuoto.

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

o

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

sono preferiti. Array.Empty alloca un array tipizzato statico in modo che venga creato solo un array vuoto di T e che sia condiviso tra tutti gli interrogabili vuoti.


Array.Empty<T>è disponibile solo dopo .NET Framework 4.6. Per le versioni precedenti, è possibile utilizzarenew object[0].Cast<T>()
TZU il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.