【发布时间】:2011-02-11 02:15:07
【问题描述】:
当一个方法返回IEnumerable<T>而我没有返回任何东西时,我们可以使用Enumerable.Empty<T>()。
返回IQueryable<T>的方法是否有与上述等效的方法
【问题讨论】:
标签: c# return iqueryable
当一个方法返回IEnumerable<T>而我没有返回任何东西时,我们可以使用Enumerable.Empty<T>()。
返回IQueryable<T>的方法是否有与上述等效的方法
【问题讨论】:
标签: c# return iqueryable
也许:
Enumerable.Empty<T>().AsQueryable();
【讨论】:
Union 查询被分解为多个查询而不是一个。
Union 所在的行中中断,但可能在您在此之后尝试某些操作时。这个答案被接受并投票,但它可能会产生很大的误导。 @Sunny 请考虑编辑您的答案。这个问题的答案对我有帮助:Enumerable.Empty<T>().AsQueryable(); This method supports the LINQ to Entities infrastructure and is not intended to be used directly from your code。
Enumerable.Empty<T>().AsQueryable(); 应该这样做。
【讨论】:
试试return new T[0].AsQueryable();
【讨论】:
假设您有一个名为result 的IQueryable<T>:
return result.Take(0);
【讨论】:
我建议不要使用 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>()