日期:2014-05-20  浏览次数:20762 次

int i = 0;var q = from n in numbers select ++i;
public void Test()
  {
  int[] numbers = new int[] { 5, 4, 1, 3, 9, 8, 6, 7, 2, 50 };
  int i = 0;
  var q =
  from n in numbers
  select ++i;
   
  foreach (var v in q)
  {
  Console.WriteLine("v = {0}, i = {1}", v, i);//i==v 真是奇怪,这里的i难道不是上边的变量i
  }
  }


------解决方案--------------------
第一个.延迟查询 
第二个.tolist的时候 i已经等于10了
------解决方案--------------------
select ++i;
延迟执行,循环时输出数据
调用ToList()扩展方法,立即执行查询, i就为10
------解决方案--------------------
延迟查询。。。。。。。。。。。。