在VS 2012或更高版本中,是否有一种很好的方法来调试C#中LINQ语句的内部,以检查where中lambda函数的迭代?

在VS 2012或更高版本中,是否有一种很好的方法来调试C#中LINQ语句的内部,以检查where中lambda函数的迭代?,c#,.net,linq,C#,.net,Linq,例如,假设我使用WHERE子句,我希望看到迭代发生,而不将其更改为迭代循环。在Visual Studio 2012或更高版本中检查lambda函数迭代。支持即时窗口中的LINQ和lambda表达式。这可以帮助您修改查询并可能更容易地进行调试,但无法将其作为标准循环进行调试 对于开发LINQ查询和转储其结果,也是一个非常有用的工具 另一种选择是使用不同的lambda表达式语法,允许您编写多个语句,并因此逐步完成代码 .Select(i => { return i; //Add a b

例如,假设我使用WHERE子句,我希望看到迭代发生,而不将其更改为迭代循环。在Visual Studio 2012或更高版本中检查lambda函数迭代。

支持即时窗口中的LINQ和lambda表达式。这可以帮助您修改查询并可能更容易地进行调试,但无法将其作为标准循环进行调试

对于开发LINQ查询和转储其结果,也是一个非常有用的工具

另一种选择是使用不同的lambda表达式语法,允许您编写多个语句,并因此逐步完成代码

.Select(i => {
    return i; //Add a breakpoint on this line.
});

不。如果你觉得需要,也许你的LINQ表达式太复杂了。你可以在上面加一个断点。只需将光标放在where子句的内容上,然后点击F9。它应该突出显示where子句。然后开始调试,你应该达到临界点。让问题更具体一点。作为一个空指针可以解决这个问题,请参阅下面关于Cyrals答案的评论@考虑到答案,Mitch有没有关于重构的建议?是的,这是一个继承的代码…谢谢Cyral!我曾经使用过一点LINQPad,但那时我没有那么多地使用LINQ。你多行的想法很聪明,我以后会试试的。原来lambda中的父属性中有一个空指针。如果有用的话,我可以添加代码片段。我要试着在哪里短路。