Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用LINQ创建IOrderedQueryable的集合时,是否覆盖GetEnumerator方法?_C#_Linq_Enumeration_Iorderedqueryable - Fatal编程技术网

C# 使用LINQ创建IOrderedQueryable的集合时,是否覆盖GetEnumerator方法?

C# 使用LINQ创建IOrderedQueryable的集合时,是否覆盖GetEnumerator方法?,c#,linq,enumeration,iorderedqueryable,C#,Linq,Enumeration,Iorderedqueryable,我理解,如果您构造一个LINQ查询并将其附加到.ToList()中,那么您就是在那里执行该LINQ查询,然后返回一个列表对象。然而,如果你不这样做,你会得到一个IOrderedQueryable对象,据我所知,它还没有被排序 如果我将该集合放入For-Each语句中,那么列表在这一点上是有序的吗?这是否意味着我实质上已经覆盖了该集合的GetEnumerator的默认实现?您所指的是被称为延迟执行的执行。这基本上意味着,只要不调用ToList()、ToArray()或任何其他将LINQ查询直接强制

我理解,如果您构造一个LINQ查询并将其附加到
.ToList()
中,那么您就是在那里执行该LINQ查询,然后返回一个列表对象。然而,如果你不这样做,你会得到一个IOrderedQueryable对象,据我所知,它还没有被排序


如果我将该集合放入For-Each语句中,那么列表在这一点上是有序的吗?这是否意味着我实质上已经覆盖了该集合的GetEnumerator的默认实现?

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

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


这里有一个MSDN博客,关于这个特定主题:

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

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


这里有一个MSDN关于这个特定主题的博客:

谢谢你的文章,我将看一看。因此,我应该将延迟LINQ查询视为一个独立的排序实体,它不依赖GetEnumerator,而是在实际使用集合时(例如在for each语句中)有自己的方式对集合进行排序?确切地说,您可以将其视为对集合的引用,LINQ操作在实际使用时立即应用。感谢本文,我将看一看。因此,我应该将延迟LINQ查询视为一个独立的排序实体,它不依赖GetEnumerator,而是在实际使用集合时(例如在for each语句中)有自己的方式对集合进行排序?确切地说,您可以将其视为对集合的引用,LINQ操作在实际使用时立即应用于该操作。