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();
  }
}