这是延迟查询造成的。query对象,实质是一个查询语句,而不是查询后的结果,在遍历的时候执行,执行query保存的查询语句。此时numbers已经Add(2)了,所以会输出两个10和20.
....numbers.select 只是得到查询语句,是没有执行的嘛...
在numbers.Add(2);
才会执行numbers.Select(n=>n*10);
?
看你是foreach哪个对象:
numbers :则输出 1,2
query :则输出10,20
numbers.select 只是得到查询语句,是没有执行