Enumerable.Empty <T> () odpowiednik dla IQueryable


131

Gdy metoda zwraca IEnumerable<T>i nie mam nic do zwrócenia, możemy użyć Enumerable.Empty<T>().

Czy istnieje odpowiednik powyższego dla zwracanej metody IQueryable<T>

Odpowiedzi:


209

Może:

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

2
Wiem, obecnie jest to jedyne proste, bezpośrednie i brudne rozwiązanie ;-)
Numan

7
Niestety, nie tworzy to rzeczywistego pustego IQueryable, co oznacza, że ​​np. UnionZapytania są dzielone na wiele zapytań zamiast jednego.
NetMage

34

Enumerable.Empty<T>().AsQueryable(); powinien to zrobić.


8

Próbować return new T[0].AsQueryable();


@Nauman - faktycznie tworzysz [pustą] tablicę T - w rzeczywistości nie jest tworzony nowy obiekt T.
zastrowm


1

Odradzałbym odpowiedź alejandroboga, ponieważ nadal będzie ona wykorzystywać pamięć do tworzenia pustej tablicy.

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

lub

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

są preferowane. Array.Empty przydzieli statyczną tablicę o typie statycznym, więc utworzona zostanie tylko jedna pusta tablica T, która jest współdzielona przez wszystkie Empty queryables.


Array.Empty<T>jest dostępny tylko po .NET Framework 4.6. W przypadku wcześniejszych wersji możesz użyćnew object[0].Cast<T>()
TZU
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.