早在 2010 年,我就在 Simple-Talk.com ( LINQ Secrets Revealed: Chaining and Debugging )上写了一篇综合文章来解决这个问题:
我将 LINQPad(正如 OwenP 前面提到的)作为Visual Studio外部的一个很好的工具来谈论。特别注意其非凡的 Dump() 方法。您可以将其注入 LINQ 链中的一个或多个点,以惊人的干净和清晰的方式查看您的数据。虽然非常有用,但 LINQPad 是 Visual Studio 外部的。因此,我还介绍了几种可在Visual Studio 中使用的技术,因为有时将一大块代码迁移到 LINQPad 是不切实际的:
(1) 注入对我在文章中介绍的 Dump() 扩展方法的调用以允许记录。我从 Bart De Smet 的 Watch() 方法开始,在他的信息文章LINQ to Objects – Debugging 中添加了一些标签和着色以增强可视化,尽管与 LINQPad 的 Dump 输出相比它仍然相形见绌。
(2) 使用 Robert Ivanc 的LINQPad Visualizer插件将 LINQPad 的可视化直接引入 Visual Studio。不确定这是否是通过我的推动 :-),但我在撰写文章时出现的一些不便现在都在最新版本中得到了很好的解决。它具有完整的 VS2010 支持,并允许您在调试时检查您喜欢的任何对象。
(3) 在 LINQ 链的中间嵌入 nop 语句,以便您可以设置断点,如 Amazing Pete 前面所述。
2016.12.01 更新
而我刚刚写了上述文章的续篇,标题为简单的LINQ 调试和可视化,它揭示了真正的 LINQ 调试功能终于在 Visual Studio 2015 中出现,OzCode 中即将发布的新功能。@Dror 对这个问题的回答只是对它的一瞥,但我鼓励您阅读我的新文章以深入了解“如何做”。(而且我不为 OzCode 工作。:-)