我想清楚我对LINQ的疑问.我的代码如下:
val collection = this.Employees.Where(emp => emp.IsActive)
foreach (var emp in collection)
{
// some stuff
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我写这样的代码:
foreach (var emp in this.Employees.Where(emp => emp.IsActive))
{
// some stuff
}
Run Code Online (Sandbox Code Playgroud)
将this.Employees.Where(emp => emp.IsActive)在每次迭代时执行还是只执行一次?
你可以这样想foreach:
foreach (var x in y)
// ...
Run Code Online (Sandbox Code Playgroud)
如下:
T x;
using (var enumerator = y.GetEnumerator())
{
while (enumerator.MoveNext())
{
x = enumerator.Current;
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
所以你展示的两段代码会产生同样的效果.
一for但不同的是:
for (int index = 0; index < s.Length; index++)
Run Code Online (Sandbox Code Playgroud)
这s.Length将在循环的每次迭代中进行评估.
| 归档时间: |
|
| 查看次数: |
110 次 |
| 最近记录: |