Enumerable.Empty <T>()等效于IQueryable

Num*_*man 126 c# return iqueryable

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

对于返回的方法,是否有与上述相同的内容 IQueryable<T>

Sun*_*nny 199

也许:

Enumerable.Empty<T>().AsQueryable();
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,这不会创建一个真正的空IQueryable,这意味着它会导致例如`Union`查询被分解为多个查询而不是一个查询. (6认同)
  • 我知道,目前这是唯一简单,直接和肮脏的解决方案 (2认同)

Jos*_*osh 34

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


ale*_*bog 8

尝试 return new T[0].AsQueryable();


Pro*_*one 7

假设您有一个IQueryable<T>电话result

return result.Take(0);
Run Code Online (Sandbox Code Playgroud)


小智 5

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

Array.Empty<T>().AsQueryable();
Run Code Online (Sandbox Code Playgroud)

或者

Enumerable.Empty<T>().AsQueryable();
Run Code Online (Sandbox Code Playgroud)

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