2011-04-28 57 views
2

在我的代码中,当它到达foreach循环时,我运行调试器,直到它突出显示“结果”,然后它停止运行代码,并且没有抛出异常或任何异常。无法调试我的Linq查询?

我真的不知道为什么当这里出现问题时它不会给我任何错误信息。

var result = 
    from a in db.table 
    select new {table = a}; 

foreach(var row in result){ 
    ... 
} 
+1

你有试过把它关掉吗? – Bastardo 2011-04-28 12:53:37

回答

3

在调试Linq查询时,如果不是试图在调试器中检查IQueryable的内容,而是将其平铺到列表或数组中,它通常会使生活更轻松。

尝试把:

var resultList = result.ToList(); 

..after查询;在该行之后直接放置一个断点;然后在调试器中看到​​的内容是什么。

1

我猜想它实际上是在遍历整个列表。如果你有一个大表或者一个复杂的查询,它需要一段时间(秒)来执行。

它是否超出了foreach循环?

0

也许你正等待行来从数据库中,并没有锁竞争导致你的应用程序拖延和等待您的访问被释放表锁(S)。这不是一个错误条件,也不应该抛出异常。例如,是否有写入者正在同时写入您尝试访问的表或已获得独占表锁的其他访问者,特别是在长事务中?