C# 可枚举。空<;T>;()相当于iquiryable
当一个方法返回C# 可枚举。空<;T>;()相当于iquiryable,c#,return,iqueryable,C#,Return,Iqueryable,当一个方法返回IEnumerable而我没有任何东西要返回时,我们可以使用Enumerable.Empty() 对于返回IQueryable
IEnumerable
而我没有任何东西要返回时,我们可以使用Enumerable.Empty()
对于返回
IQueryable
returnnew T[0].AsQueryable()的方法,是否有与上述相同的方法代码>可枚举.Empty().AsQueryable()代码>应该这样做。也许:
Enumerable.Empty<T>().AsQueryable();
Enumerable.Empty().AsQueryable();
假设您有一个名为结果的IQueryable
:
return result.Take(0);
我建议不要使用alejandrobog的答案,因为这仍然会使用内存来创建空数组
Array.Empty<T>().AsQueryable();
Array.Empty().AsQueryable();
或
Enumerable.Empty().AsQueryable();
优先考虑。Array.Empty将分配一个静态类型的数组,因此只创建一个T的空数组,并在所有空查询文件中共享。我知道,目前这是唯一简单、直接和脏的;-)解决方案不幸的是,这不会创建实际的空IQueryable,这意味着它会导致例如Union
查询被分解为多个查询,而不是一个查询。@NetMage没错。更令人困惑的是,您的代码没有在Union
所在的行中中断,但可能是在您尝试之后。这个答案是被接受和投票的,但它可能是非常误导的@阳光请考虑编辑您的答案。这个问题的答案帮助了我:。@Nauman-你实际上创建了一个[empty]T数组-实际上没有创建新的T对象。array.empty
仅在.NET Framework 4.6之后可用。对于早期版本,可以使用新对象[0].Cast()
Enumerable.Empty<T>().AsQueryable();