我试过寻找答案却找不到答案. ‘问题’很简单:
如果我有一个使用linq的项目集合如下:
var items = db.AnyTable.Where(x => x.Condition == condition).ToList();
使用linq但没有ToList()的另一个项集合:
var items2 = db.AnyTable.Where(x => x.Condition == condition);
如果现在我尝试使用foreach迭代每个项目(我没有尝试使用或其他类型的迭代方法):
foreach (var item in items) { int i = 2;// Doesn't matter,The important part is to put a breakpoint here. }
如果我在断点处停止代码并尝试更新sql Management Studio上的AnyTable,一切正常.如果!:
foreach (var item in items2) { int i = 2;// Doesn't matter,The important part is to put a breakpoint here. }
如果现在我尝试更新(在断点处)sql Management Studio上的AnyTable我将无法做到(TimeOut).
为什么ToList()会产生这样的差异?
根据我所学到的,特定的区别在于查询正在执行时(对于在声明处执行的项目,在item2上执行它在foreach语句上执行).为什么阻止我更新AnyTable?