当一个方法返回 IEnumerable<T>而我没有任何要返回的内容时,我们可以使用 Enumerable.Empty<T>()。
IEnumerable<T>
Enumerable.Empty<T>()
对于返回 IQueryable<T>的方法,是否存在与上述等价的
IQueryable<T>
试试 return new T[0].AsQueryable();
return new T[0].AsQueryable();
Enumerable.Empty<T>().AsQueryable();应该可以。
Enumerable.Empty<T>().AsQueryable();
也许:
假设你有一个名为 result的 IQueryable<T>:
result
return result.Take(0);
我建议不要用 alejandrobog 的答案,因为这仍然会使用内存来创建一个空数组。
Array.Empty<T>().AsQueryable();
或者
最好。数组。Empty 将分配一个静态类型的数组,这样只创建一个 T 的空数组,并在所有 Empty 查询中共享。
可枚举的。空()。可查询的() ; 是错误的,因为 Union 将会中断并且不会工作
var db = new DbContext(); var query = db.Set<T>().Take(0);