使用 LINQ 创建 IOrderedQueryable 集合时,是否重写了 GetEnumerator 方法
本文关键字:重写 是否 GetEnumerator 方法 LINQ 创建 IOrderedQueryable 集合 使用 | 更新日期: 2023-09-27 18:30:58
我知道,如果您构造一个 LINQ 查询并将其追加.ToList()
则您正在那里执行该 LINQ 查询,然后返回一个列表对象。但是,如果您不这样做,则会得到一个 IOrderedQueryable 对象,据我了解,该对象尚未排序。
如果我随后将该集合放入 For Each 语句中,此时列表是否排序?这是否意味着我实质上覆盖了该集合的默认 GetEnumerator 实现?
您所指的称为延迟执行。这基本上意味着,只要您不调用 ToList()
、ToArray()
或任何其他将 LINQ 查询直接强制转换为集合的方法,该查询就会在使用分配给它的变量时执行。
在使用查询之前,不会枚举IEnumerable
。但是,我认为在延迟执行的情况下GetEnumerator
不会被覆盖。
下面是有关此特定主题的 MSDN 博客:http://blogs.msdn.com/b/charlie/archive/2007/12/09/deferred-execution.aspx