我有一个简单的LinqToSQL语句无效。像这样:
List<MyClass> myList = _ctx.DBList
.Where(x => x.AGuidID == paramID)
.Where(x => x.BBoolVal == false)
.ToList();
我在调试器中查看_ctx.DBList,第二项适合这两个参数。
有没有办法可以深入研究这个问题?
答案 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个数组(加上它可能需要很长时间才能得到实际错误)。