JetBrains Rider 2025.1 Help

调试 LINQ 表达式

在 C# 中处理 LINQ 表达式时,您可以使用 JetBrains Rider 以可视化方式调试它们,清晰地展示查询每一步中数据的转换方式。

请查看以下示例:

using System; using System.Linq; class PrimeFinder { public static void Find() { int skip = 0; int limit = 100; var result = Enumerable.Range(1, int.MaxValue) .Skip(skip) .Take(limit) .Where(IsPrime) .ToList(); foreach (var prime in result) { Console.WriteLine(prime); } } private static bool IsPrime(int candidate) { return candidate == 91 || // Bug here Enumerable.Range(2, (int)Math.Sqrt(candidate)) .All(n => candidate % n != 0); } }

让我们使用 Rider 的 LINQ 调试功能逐步分析 LINQ 表达式。

  1. 通过在该行设置断点,使程序在 LINQ 表达式处暂停执行:

    var result = Enumerable.Range(1, int.MaxValue) // Breakpoint here .Skip(skip) .Take(limit) .Where(IsPrime) .ToList();
  2. 当执行在断点处暂停时,您会注意到 LINQ 表达式上方显示了 浏览 LINQ 内嵌提示:

    在 Rider 中探索 LINQ 提示。
  3. 单击 浏览 LINQ 以打开 LINQ 可视化工具。 Rider 将在对话框中详细展示数据如何通过 LINQ 链的每一步流动:

    Rider 中的 LINQ 可视化弹窗。
  4. 使用此可视化工具查看数据在每个阶段的变化:

    • Range:Enumerable.Range 生成的初始序列。

    • Skip:跳过 方法跳过的项数。

    • Take:参与 选择的项子集。

    • Where: 根据 IsPrime 方法过滤的项。

  5. 逐步分析中间结果以发现问题。 例如,在此代码中,您会注意到数字 91 包含在结果中,这表明 IsPrime 方法中存在错误。

浏览 LINQ 功能对于调试复杂的 LINQ 查询特别有用,因为它可以让查询的转换过程一目了然。

启用 LINQ Debugger 插件

此功能依赖于 LINQ Debugger 插件,该插件默认在 JetBrains Rider 中捆绑并启用。 如果相关功能不可用,请确保没有禁用该插件。

  1. 按下 Ctrl+Alt+S 以打开设置,然后选择 插件

  2. 打开 已安装 选项卡,找到 LINQ Debugger 插件,并选中插件名称旁边的复选框。

最后修改日期: 2025年 6月 25日