如何在 VS 2013 的 Immediate Window 中执行 LINQ and/or foreach?

How to execute LINQ and/or foreach in Immediate Window in VS 2013?

Immediate Window 在调试过程中探测当前状态时是非常有用的工具。我了解到,通过使用问号,可以在其中做更多的事情,如图 .

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

执行以下语句时:

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

我遇到了这些错误:

Expression cannot contain lambda expressions
Invalid expression term 'foreach'

(如何)我可以立即执行这些 Window?

VS Gallery中也有一个工具,但据说它只适用于 VS05 和 VS08,大多数程序员很久以前就把它抛在脑后了。我正在寻找适用于 VS13 and/or VS15.

的东西

不幸的是,似乎无法使用即时 window 或监视 window 中的 lambda。技术原因可能是 linq 查询通常被转换为普通表达式,并且不知何故这需要一个完整的编译步骤而不是这两个 windows.

使用的技巧

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

在 VS2015 中,您可以在监视 window 和立即数 window 中使用 lambda 表达式。

只需添加手表或立即输入 window(调试时 things 在范围内):

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

你会得到一个结果列表。

这是一篇关于 this

的博客

根据 visual studio 2015 中可用的新功能,现在可以在 watch/immediate window:

中支持调试 lambdas

Lambda Expressions in Debugger Windows

You can now use lambda expressions in the Watch, Immediate, and other debugger windows in C# and Visual Basic.

来源:

Visual Studio 2015 RTM