【问题标题】:Using LINQ in Visual Studio while debugging调试时在 Visual Studio 中使用 LINQ
【发布时间】:2016-10-21 16:10:21
【问题描述】:

注意: 我愿意下载并安装任何可能为这类东西制作的扩展。该解决方案不需要直接来自标准 VS 功能。

问题: 有没有办法在调试器中停止时使用 LINQ 或任何其他查询方法来测试和查看列表、数组、IEnumerable 等的结果?

我知道您可以使用即时窗口删除对象中包含的信息,但我想知道是否有一种方法可以使用实际数据构建所需的 LINQ。

更新:

这是我在即时窗口中尝试使用 LINQ 时遇到的错误:

returnRecords.Select(x => x)

错误 CS1061:“列表”不包含“选择”的定义,并且没有 > 扩展方法“选择” 可以找到接受“列表”类型的第一个参数(是 您缺少 using 指令或程序集引用?)错误 CS1061:'List' 没有

但这在代码中可以正常工作

var fu = returnRecords.Select(x => x);

更新 2:

即使是这样简单的事情也行不通:

        List<int> abc = new List<int>();
        abc.Add(12);
        abc.Add(15);
        abc.Add(16);
        abc.Add(91);
        abc.Add(81);
        abc.Add(14);
        abc.Add(13);
        abc.Add(10);
        abc.Add(145);
        abc.Add(12);

立即窗口:

abc
Count = 9
    [0]: 12
    [1]: 15
    [2]: 16
    [3]: 91
    [4]: 81
    [5]: 14
    [6]: 13
    [7]: 10
    [8]: 145
abc.Where(x => x < 50);
error CS1061: 'List<int>' does not contain a definition for 'where' and no extension method 'where' accepting a first argument of type 'List<int>' could be found (are you missing a using directive or an assembly reference?)

【问题讨论】:

  • 使用 VS2015,您可以在即时窗口中执行 linq 查询。您可以在那里创建和使用现有的(在您所在的范围内可用的)变量
  • 大多数 linq 查询在即时窗口/监视窗口中工作,一些数据库查询不会
  • @Jmaurier - 如果您能更好地解释您想要实现的目标,我们可以提供更好的帮助
  • 我通常将我所有的 linq 对象转换为 .ToList() 以便我可以在监视窗口中轻松查看结果。
  • @GiladGreen 我不是 OP,我只是给你添加评论

标签: c# linq visual-studio-2015


【解决方案1】:

您的直接问题是您的代码中缺少对 LINQ 程序集的引用;这就是您看到 CS1061 错误的原因。只需将using System.Linq; 添加到文件顶部即可。然后,您将能够在即时窗口中执行 LINQ 语句,您将看到,例如:

abc.Where(x => x < 50)
{System.Linq.Enumerable.WhereListIterator<int>}
    [0]: 12
    [1]: 15
    [2]: 16
    . . .

不过,有关调试 LINQ 的更多信息,我建议您参阅两篇全面介绍它的文章:

这基本上是一个由两部分组成的系列(尽管两部分之间已经过去了六年!)。第一个介绍了您可以在 LINQ 中进行调试的各种方法,其中没有一种非常令人满意,但都与您所能获得的一样好。

这仍然是一本非常有用的读物​​,可以为很好地理解调试 LINQ 所涉及的内容奠定基础。然后第二篇文章介绍了 OzCode 即将发布的新功能,这是一个 Visual Studio 扩展,它为 LINQ 原位调试带来了全面支持。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-21
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 2016-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多