Linq表达式迭代器源

时间:2019-08-07 14:51:20

标签: c# linq lambda

我对C#中的WhereListIterator的工作方式有疑问。 示例:在这种情况下,当我使用where选择时:

var itemsNull = products.Where(p => p.ItemId == 0).Select(ell => ell.SKU);

itemsNull的类型为WhereListIterator。 此类包含源属性。我想知道来源中是否包含产品列表的副本。

1 个答案:

答案 0 :(得分:0)

如果简单地说,LINQ表达式只有在需要时才执行,因此itemsNull仅包含对源属性表达式的引用,并且仅在通过foreach或其他LINQ表达式。

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

相关问题