Enumerable.Empty <T> () setara dengan IQueryable

130

Ketika suatu metode kembali IEnumerable<T>dan saya tidak memiliki apa pun untuk dikembalikan, kita dapat menggunakan Enumerable.Empty<T>().

Apakah ada yang setara dengan di atas untuk metode pengembalian IQueryable<T>

Numan
sumber

Jawaban:

206

Mungkin:

Enumerable.Empty<T>().AsQueryable();
Cerah
sumber
2
Saya tahu, saat ini itulah satu-satunya solusi sederhana, langsung & kotor ;-)
Numan
7
Sayangnya itu tidak membuat IQueryable kosong yang sebenarnya, yang berarti itu menyebabkan mis. UnionKueri dipecah menjadi beberapa kueri alih-alih satu.
NetMage
34

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

Josh
sumber
8

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

alejandrobog
sumber
@Nauman - Anda benar-benar membuat array T [kosong] - tidak ada objek baru T yang benar-benar dibuat.
zastrowm
4

Katakanlah Anda memiliki IQueryable<T>yang disebut result:

return result.Take(0);
Pelindung satu
sumber
1

Saya akan menyarankan terhadap jawaban alejandrobog karena ini masih akan menggunakan memori untuk membuat array kosong.

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

atau

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

lebih disukai. Array.Empty akan mengalokasikan array yang diketik secara statis sehingga hanya satu array kosong dari T yang dibuat dan dibagi di antara semua queryable yang kosong.

Josh
sumber
Array.Empty<T>hanya tersedia setelah .NET Framework 4.6. Untuk versi sebelumnya, Anda dapat menggunakannew object[0].Cast<T>()
TZU