2011-04-28 27 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)。這不是一個錯誤條件,也不應該拋出異常。例如,是否有寫入者正在同時寫入您嘗試訪問的表或已獲得獨佔表鎖的其他訪問者,特別是在長事務中?