【问题标题】:Enumerable.Empty<T>() equivalent for IQueryableEnumerable.Empty<T>() 等效于 IQueryable
【发布时间】:2011-02-11 02:15:07
【问题描述】:

当一个方法返回IEnumerable&lt;T&gt;而我没有返回任何东西时,我们可以使用Enumerable.Empty&lt;T&gt;()

返回IQueryable&lt;T&gt;的方法是否有与上述等效的方法

【问题讨论】:

    标签: c# return iqueryable


    【解决方案1】:

    也许:

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

    【讨论】:

    【解决方案2】:

    Enumerable.Empty&lt;T&gt;().AsQueryable(); 应该这样做。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • @Nauman - 你实际上创建了一个 [empty] T 数组 - 实际上没有创建 T 的新对象。
      【解决方案4】:

      假设您有一个名为resultIQueryable&lt;T&gt;

      return result.Take(0);
      

      【讨论】:

        【解决方案5】:

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

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

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

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

        【讨论】:

        • Array.Empty&lt;T&gt; 仅在 .NET Framework 4.6 之后可用。对于早期版本,您可以使用new object[0].Cast&lt;T&gt;()
        猜你喜欢
        • 1970-01-01
        • 2020-07-14
        • 2020-12-22
        • 2013-09-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多