2010-03-16 27 views
2

我有一個不起作用的簡單LinqToSQL語句。這樣的事:在Visual Studio Debugger中查看Lambdas

List<MyClass> myList = _ctx.DBList 
    .Where(x => x.AGuidID == paramID) 
    .Where(x => x.BBoolVal == false) 
    .ToList(); 

我看調試器中的_ctx.DBList,第二項適合這兩個參數。

有沒有一種方法可以深入瞭解這個問題?

回答

1

我會將它分成兩個步驟 - 構建查詢,然後分配給列表。這樣你就可以在調試器中查看生成的SQL,看看它是否正確。當我有查詢問題進行調試時,我有時會剪切/粘貼(並修復)到SSMS中。

var q = _ctx.DBList 
    .Where(x => x.AGuidID == paramID) 
    .Where(x => x.BBoolVal == false) 
// view q in the debugger to see the SQL it will generate 
var myList = q.ToList(); 
1

你基本上有2個選項。

可以打散的聲明,看看發生了什麼,在每個步驟中產生的:

var p1 = _ctx.DBList.Where(x => x.AGuidID == paramID).ToList(); 
var p2=p1.Where(x => x.BBoolVal == false).ToList(); 
// and you just examine each of them in the debugger 
// I put ToList() here so you get the actual result 

或者你也可以在不同線路上寫你的lambda表達式將斷點設置就可以了,然後通過與步驟代碼重複你會得到更多的信息,但是你很可能不會比上面的2個數組更有用(再加上可能需要很長時間才能得到實際的錯誤)。

相關問題