1

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

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

4

1 回答 1

1

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

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

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

于 2013-09-12T08:42:14.803 回答