【发布时间】:2014-02-03 09:31:05
【问题描述】:
IEnumerable 对象上的 Linq 方法是堆栈还是覆盖以前的方法?
例如
string[] exampleArray = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
IEnumerable<string> iEnum1 = exampleArray.Skip(1);
IEnumerable<string> iEnum2 = iEnum1.Take(5);
IEnumerable<string> iEnum3 = iEnum2.Skip(1);
IEnumerable<string> iEnum4 = iEnum3.Take(2);
int count = iEnum4.Count();
如果我希望重用该 IEnumerable,我是否可以期望 count 等于 2,我是否仍然可以期望 iEnum3 枚举 "3", "4", "5", "6"?
我试图避免创建新数组,即使它们在逻辑上更易于使用,因为初始数组已经相对较大(来自更大的文件流)。
【问题讨论】:
-
您可能想查看调试器中的值或将它们打印到控制台。
-
你可以这样写 exampleArray.Skip(1).Take(5).Skip(1).Take(2).Count();
标签: c# .net linq indexing ienumerable