Enumerable.Empty <T> () entspricht IQueryable


130

Wenn eine Methode zurückkehrt IEnumerable<T>und ich nichts zurückgeben kann, können wir verwenden Enumerable.Empty<T>().

Gibt es ein Äquivalent zu dem oben genannten für eine Methode, die zurückgibt? IQueryable<T>

Antworten:


206

Vielleicht:

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

2
Ich weiß, derzeit ist das die einzige einfache, direkte und schmutzige ;-) Lösung
Numan

7
Leider wird dadurch kein tatsächlich leeres IQueryable erstellt, was bedeutet, dass z. B. UnionAbfragen in mehrere Abfragen anstatt in eine aufgeteilt werden.
NetMage

34

Enumerable.Empty<T>().AsQueryable(); Sollte es tun.


8

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


@Nauman - Sie erstellen tatsächlich ein [leeres] T-Array - es wird tatsächlich kein neues Objekt von T erstellt.
Zastrowm


1

Ich würde von der Antwort von alejandrobog abraten, da dies immer noch Speicher verwendet, um ein leeres Array zu erstellen.

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

oder

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

sind bevorzugt. Array.Empty weist ein statisch typisiertes Array zu, sodass nur ein leeres Array von T erstellt wird, das von allen leeren abfragbaren Dateien gemeinsam genutzt wird.


Array.Empty<T>ist nur nach .NET Framework 4.6 verfügbar. Für frühere Versionen können Sienew object[0].Cast<T>()
TZU
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.