在下面的代码中,当它到达foreach循环时,我运行调试器,直到它突出显示"result",然后它在该点停止运行代码,并且没有抛出异常或任何东西。
我真的不知道为什么它不会给我任何错误信息,当这里有什么问题。
var result =
from a in db.table
select new {table = a};
foreach(var row in result){
...
}
在调试Linq查询时,如果不是尝试在调试器中检查IQueryable
的内容,而是将其扁平化为列表或数组,通常会使事情变得更容易。
试着把:
var resultList = result.ToList();
. .在您的询问之后;在该行后面直接设置一个断点;然后在调试器中查看resultList
的内容
我猜它实际上是遍历列表。如果你有一个大的表或一个复杂的查询,它将需要一段时间(秒)来执行。
是否超出了foreach循环?
也许你正在等待来自数据库的行,并且有锁争用导致应用程序停滞并等待正在访问的表上的锁被释放。这不是错误条件,也不应该抛出异常。例如,是否存在并发写入您试图访问的表或其他已获得排他表锁的访问器,特别是在长事务中?