【问题标题】:How to execute LINQ and/or foreach in Immediate Window in VS 2013?如何在 VS 2013 的即时窗口中执行 LINQ 和/或 foreach?
【发布时间】:2015-10-22 09:54:03
【问题描述】:

在调试过程中探测当前状态时,即时窗口是非常有用的工具。我了解到通过使用问号,可以在其中做更多事情,如in this post 所示。

但是,我仍然不知道如何在那里执行 LINQ 查询(包括 lambda 表达式)。我也未能执行 foreach 语句。

执行以下语句时:

?(things.Select(thing=>thing.Id);)
?(foreach(var thing in things);)

我收到以下错误:

表达式不能包含 lambda 表达式
无效的表达式术语“foreach”

(如何)我可以在即时窗口中执行这些操作?

VS Gallery 中也有一个工具,但据说它只适用于 VS05 和 VS08,大多数程序员很久以前就放弃了。我正在寻找适用于 VS13 和/或 VS15 的东西。

【问题讨论】:

  • 我很确定您不能在即时窗口或快速观看中执行此操作。我 100% 的猜测是运行时编译器的解释太复杂了
  • 难道 vs2015 不允许在监视窗口中调试 lambda? dirkstrauss.com/… 还说here 你可以使用监视/即时窗口。
  • @StasIvanov 您介意指出重复我的问题的部分吗?我看不到相似之处(除了一些使用的词)......
  • @KonradViltersten 我认为您的问题是关于在调试/立即/快速监视窗口中执行 lambda。并且已经在提到的问题中得到了回答。还有一个答案是您实际上可以在 VS2015 中执行此操作,但不能在早期版本中执行。但也许我误解了你的问题。

标签: c# linq visual-studio lambda immediate-window


【解决方案1】:

根据 Visual Studio 2015 中提供的新功能,现在可以在监视/立即窗口中提供对调试 lambda 的支持:

调试器窗口中的 Lambda 表达式

您现在可以在 Watch、Immediate 和 C# 和 Visual Basic 中的其他调试器窗口。

来源:

Visual Studio 2015 RTM

【讨论】:

  • 目前还没有找到任何东西的运气——不过仍在寻找中!
  • 请注意,它在托管兼容模式下不起作用
【解决方案2】:

在 VS2015 中,您可以在监视窗口和即时窗口中使用 lambda 表达式。

只需添加手表或在即时窗口中输入(在调试和things 范围内):

things.Select(thing => thing.Id);

你会得到一个结果列表。

这是一篇关于this的博客

【讨论】:

  • VS 2013 好运吗?据我所知,大多数人现在都在使用它,而 VS 2015 尚未正式发布。有时因为客户发号施令而无法选择版本。
  • 不幸的是,我一无所知。 Visual Studio 2015 于 2015 年 7 月 20 日发布。
  • 请注意,Visual Studio 2015 Community Edition 具有与 Pro 完全相同的功能(例如可以安装插件)并且完全免费。
  • @RoyT。我被警告过在 VS15 中还有 certain issues。以我的经验,今天的 RTM 还不是现成的版本。 SP1 是。 :) 话虽如此,如果社区版具有相同的功能,那么获得付费 VS 的意义何在?
  • @KonradViltersten 在我的工作中,我们都迁移了。当然有一些小问题,但在 2013 年也有一些。您提供的链接并没有真正列出具体问题(错误的链接?)有什么阻碍您的吗? :)
【解决方案3】:

不幸的是,从即时窗口或监视窗口中使用 lambda 似乎是不可能的。造成这种情况的技术原因可能是 linq 查询通常被转换为普通表达式,并且不知何故这需要一个完整的编译步骤,而不是这两个窗口使用的诡计。

如果您不知道 thing=>thing.Id 部分是 lambda 表达式。

【讨论】:

  • 嗯...是的,我确实知道什么是 lambda 表达式。只是我设法执行了 LINQ 查询排除小羊(嗯,不确定是否 .First() - 请注意空括号确实算作 LINQ,但仍然如此)。此外,您的回复没有说明 foreach 问题。 (注意我没有投反对票。)
  • First() 不包含 lambda,也不是 Linq 查询。 First() 被定义为实现IEnumerable<T> 的所有类型的扩展方法。
  • 我不知道为什么foreach 语句不起作用。这确实很奇怪!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-26
相关资源
最近更新 更多