Enumerable.Empty <T> () équivalent pour IQueryable


130

Quand une méthode retourne IEnumerable<T> et que je n'ai rien à renvoyer, nous pouvons utiliser Enumerable.Empty<T>().

Existe-t-il un équivalent à ce qui précède pour une méthode retournant IQueryable<T>

Réponses:


206

Peut être:

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

2
Je sais, actuellement c'est la seule solution simple, directe et sale ;-)
Numan

7
Malheureusement, cela ne crée pas un IQueryable vide, ce qui signifie que les Unionrequêtes sont par exemple divisées en plusieurs requêtes au lieu d'une seule.
NetMage

34

Enumerable.Empty<T>().AsQueryable(); devrait le faire.


8

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


@Nauman - vous créez en fait un tableau T [vide] - aucun nouvel objet de T n'est réellement créé.
zastrowm


1

Je déconseillerais la réponse d'alejandrobog car cela utilisera toujours la mémoire pour créer un tableau vide.

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

ou

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

sont préférés. Array.Empty allouera un tableau typé statique afin qu'un seul tableau vide de T soit créé et partagé entre tous les objets de requête vides.


Array.Empty<T>est uniquement disponible après .NET Framework 4.6. Pour les versions antérieures, vous pouvez utilisernew object[0].Cast<T>()
TZU
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.