4

LINQ に関する疑問を解消したいと思います。私は次のようなコードを持っています:

val collection = this.Employees.Where(emp => emp.IsActive)
foreach (var emp in collection)
 {
   // some stuff
 }

今、次のようなコードを書くと:

foreach (var emp in this.Employees.Where(emp => emp.IsActive))
 {
   // some stuff
 }

this.Employees.Where(emp => emp.IsActive)反復ごとに実行されますか、それとも一度だけ実行されますか?

4

3 に答える 3

7

a は次のように考えることができますforeach

foreach (var x in y)
    // ...

このように:

T x;
using (var enumerator = y.GetEnumerator())
{
    while (enumerator.MoveNext())
    {
        x = enumerator.Current;
        // ...
    }
}

あなたが示した2つのコードは同じ効果があります。

ただし、 Aforは異なります。

for (int index = 0; index < s.Length; index++)

Heres.Lengthは、ループの反復ごとに評価されます。

于 2013-06-06T10:04:01.697 に答える
6

一度だけ実行されます。ランタイムにとって、両方のステートメントはまったく同じ効果があります。

于 2013-06-06T10:01:16.370 に答える
0

一度だけ実行されます...

于 2013-06-06T10:04:06.630 に答える