等同于IQueryable的Enumerable.Empty <T>()


130

当一个方法返回IEnumerable<T>并且我没有任何要返回的东西时,我们可以使用Enumerable.Empty<T>()

返回的方法是否与上述等效 IQueryable<T>

Answers:


206

也许:

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

2
我知道,当前这是唯一简单,直接且肮脏的;-)解决方案
Numan 2010年

7
不幸的是,这并没有创建一个实际的空IQueryable,这意味着它会导致例如Union查询分解为多个查询而不是一个。
NetMage

34

Enumerable.Empty<T>().AsQueryable(); 应该做。




1

我建议反对alejandrobog的回答,因为这仍将使用内存来创建一个空数组。

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

要么

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

是首选。Array.Empty将分配一个静态类型数组,因此仅创建一个T的空数组,并在所有Empty可查询对象之间共享。


Array.Empty<T>仅在.NET Framework 4.6之后可用。对于早期版本,您可以使用new object[0].Cast<T>()
TZU
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.