Linqというよりそこで使われてる静的クロージャの問題。 .NET2.0でクロージャが実装されたとき有名になったプログラム。 i, j がどんな値になるか想像つく? using System; using System.Collections.Generic; delegate void F(); class Test { static void Main() { List<F> actionList = new List<F>(); for(int i = 0; i < 10; ++i) { int j = i; actionList.Add(delegate(){Console.WriteLine("i={0}, j={1}",i, j);}); } foreach (F f in actionList) f(); } }