Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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表达式迭代器源_C#_Linq_Lambda - Fatal编程技术网

C# Linq表达式迭代器源

C# Linq表达式迭代器源,c#,linq,lambda,C#,Linq,Lambda,我有一个问题,关于C#中的Where ListIterator是如何工作的。 示例:在本例中使用where select like时: var itemsNull = products.Where(p => p.ItemId == 0).Select(ell => ell.SKU); itemsnll的类型为WhereListIterator。 此类包含一个源属性。我想知道源代码是否包含产品列表的副本。如果简单地说,LINQ表达式在需要时才执行,因此,itemsnll仅包含对源属性

我有一个问题,关于C#中的
Where ListIterator
是如何工作的。 示例:在本例中使用where select like时:

var itemsNull = products.Where(p => p.ItemId == 0).Select(ell => ell.SKU);
itemsnll
的类型为
WhereListIterator

此类包含一个源属性。我想知道源代码是否包含产品列表的副本。

如果简单地说,LINQ表达式在需要时才执行,因此,
itemsnll
仅包含对源属性上表达式的引用,并将在通过
foreach
或其他LINQ表达式迭代变量时执行


您可以通过在末尾添加
.ToList()
来强制表达式立即执行(因为
ToList()
也会迭代IEnumerable)。

如果简单地说,LINQ表达式在需要时才会执行,因此,
itemsnll
仅包含对源属性上表达式的引用,并将在通过
foreach
或其他LINQ表达式迭代变量时执行


您可以通过在末尾添加
.ToList()
来强制表达式立即执行(因为
ToList()
也会迭代IEnumerable)。

如果“复制”指的是深度复制,则否,所有linq操作符都不会对源枚举进行深度复制。相反,它只是一个引用。是的,我指的是一个深度拷贝,当你为第二个对象分配内存时。所以我的结论是不,不是。我发现这类问题的答案很有帮助。如果copy是指深度复制,那么不,没有一个linq操作符对源枚举进行深度复制。相反,它只是一个引用。是的,我指的是一个深度拷贝,当你为第二个对象分配内存时。所以我的结论是,不,它不是。我发现这类问题的答案很有帮助。