C# 在Visual Studio调试器中查看Lambdas
我有一个简单的LinqToSQL语句,它不起作用。大概是这样的:C# 在Visual Studio调试器中查看Lambdas,c#,visual-studio,linq,linq-to-sql,lambda,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(); List myList=\u ctx.DBList .Where(x=>x.AGuidID==paramID) .其中(x=>x.BBoolVal=
List<MyClass> myList = _ctx.DBList
.Where(x => x.AGuidID == paramID)
.Where(x => x.BBoolVal == false)
.ToList();
List myList=\u ctx.DBList
.Where(x=>x.AGuidID==paramID)
.其中(x=>x.BBoolVal==false)
.ToList();
我查看调试器中的_ctx.DBList,第二项适合这两个参数
有没有一种方法可以让我更深入地研究这个问题,看看到底出了什么问题?我将它分为两个步骤——构造查询,然后分配给列表。这样,您可以在调试器中查看生成的SQL,并查看它是否正确。当我有查询问题需要调试时,我有时会剪切/粘贴(并修复)到SSM中
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();
你基本上有两个选择 您可以将语句分解,并查看每个步骤产生的内容:
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表达式,并在其上设置断点,然后使用step-in迭代代码。您将获得更多的信息,但很可能不会得到比上述两个数组更有用的信息(此外,如果有实际错误,可能需要很长时间才能找到)