使用 LINQ 创建 IOrderedQueryable 集合时,是否重写了 GetEnumerator 方法

本文关键字:重写 是否 GetEnumerator 方法 LINQ 创建 IOrderedQueryable 集合 使用 | 更新日期: 2023-09-27 18:30:58

我知道,如果您构造一个 LINQ 查询并将其追加.ToList()则您正在那里执行该 LINQ 查询,然后返回一个列表对象。但是,如果您不这样做,则会得到一个 IOrderedQueryable 对象,据我了解,该对象尚未排序。

如果我随后将该集合放入 For Each 语句中,此时列表是否排序?这是否意味着我实质上覆盖了该集合的默认 GetEnumerator 实现?

使用 LINQ 创建 IOrderedQueryable 集合时,是否重写了 GetEnumerator 方法

您所指的称为延迟执行。这基本上意味着,只要您不调用 ToList()ToArray() 或任何其他将 LINQ 查询直接强制转换为集合的方法,该查询就会在使用分配给它的变量执行。

在使用查询之前,不会枚举IEnumerable。但是,我认为在延迟执行的情况下GetEnumerator不会被覆盖。

下面是有关此特定主题的 MSDN 博客:http://blogs.msdn.com/b/charlie/archive/2007/12/09/deferred-execution.aspx