在Visual Studio调试器中查看Lambdas

时间:2010-03-16 21:01:40

标签: c# visual-studio linq linq-to-sql lambda

我有一个简单的LinqToSQL语句无效。像这样:

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

我在调试器中查看_ctx.DBList,第二项适合这两个参数。

有没有办法可以深入研究这个问题?

2 个答案:

答案 0 :(得分: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 :(得分:1)

你基本上有两个选择。

你可以将声明分开并查看每一步产生的内容:

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个数组(加上它可能需要很长时间才能得到实际错误)。