在我的下面的代码中,当它到达foreach循环时,我运行我的调试器,直到它突出显示“结果”,然后它只是停止在那时运行代码,并且没有抛出任何异常或任何东西。
我真的不知道为什么在这里出现问题时它不会给我任何错误信息。
var result =
from a in db.table
select new {table = a};
foreach(var row in result){
...
}
答案 0 :(得分:3)
调试Linq查询时,如果不是尝试检查调试器中IQueryable
的内容,而是将其展平为列表或数组,则通常会使生活更轻松。
尝试推杆:
var resultList = result.ToList();
..查询后;在该行之后直接放置一个断点;然后在调试器中查看resultList
的内容是什么。
答案 1 :(得分:1)
我猜它实际上正在遍历列表。如果您有一个大型表或一个复杂的查询,则需要一段时间(秒)才能执行。
它是否超越了foreach循环?
答案 2 :(得分:0)
也许您正在等待来自数据库的行,并且存在锁争用导致您的应用停止并等待您正在访问的表上的锁被释放。这不是错误条件,不应抛出任何异常。例如,是否存在同时写入您尝试访问的表的编写器或已获取独占表锁的其他访问器,尤其是在长事务中?