C# 在VisualStudio的监视窗口中使用LINQ表达式

C# 在VisualStudio的监视窗口中使用LINQ表达式,c#,visual-studio,linq,debugging,visual-studio-2017,C#,Visual Studio,Linq,Debugging,Visual Studio 2017,我在程序中有一个byte[]变量,例如: byte[] myByteArray = new byte[] { 0xF0, 0x0F }; 在调试这个程序时,我希望在VisualStudio的监视窗口中将字节数组内容显示为单个十六进制值 因此,我尝试在Watch窗口中使用以下LINQ表达式,但没有成功: myByteArray.Select(value => value.ToString("X2")).ToArray() 监视窗口的错误消息: 错误CS1061:“字节[]”不包含“选择”

我在程序中有一个byte[]变量,例如:

byte[] myByteArray = new byte[] { 0xF0, 0x0F };
在调试这个程序时,我希望在VisualStudio的监视窗口中将字节数组内容显示为单个十六进制值

因此,我尝试在Watch窗口中使用以下LINQ表达式,但没有成功:

myByteArray.Select(value => value.ToString("X2")).ToArray()
监视窗口的错误消息:

错误CS1061:“字节[]”不包含“选择”和的定义 没有接受类型为的第一个参数的扩展方法“Select” 如果缺少using指令或 汇编参考

有人知道有没有一种方法可以在VisualStudio的监视窗口中使用LINQ表达式而不安装第三方扩展

目前我正在使用VS2017 15.6.6

编辑:这个问题的截图


我试图重现您的问题,并发现以下问题:

“监视”窗口似乎使用了您通过在代码中使用而引用的名称空间

如果在代码文件中不使用linq和System.linq命名空间,则“监视”窗口无法找到扩展名

如果你有一个使用系统;并在代码中使用该名称空间中的某些内容,监视窗口将查找并执行linq扩展。如果不使用System.Linq中的任何内容,则引用将被优化掉,因此此程序集不会在运行时加载,调试器无法使用它

尝试添加以下内容:它正在进行我的测试

> using System.Collections.Generic;
 using System.Linq;

如果代码中没有“using System.Linq”语句,您仍然可以通过手动调用扩展方法来使用Linq查询:

System.Linq.Enumerable.Select(collection, x=>x.Name)

对我有用。您的代码系统中是否有所需的using指令。Linq?您是否尝试过使用即时窗口?@Bigiansen:我在即时窗口中收到了相同的错误消息。我已使用屏幕截图更新了我的帖子:即使添加using System。Linq语句,此问题仍然存在。有什么线索吗?@sɐunıɔןqɐp是的,更新了我的答案,您不仅需要使用,而且必须确保使用了该程序集中的某些内容,否则它不会在运行时加载,调试器也无法使用它。@sɐunɔןqɐp而且您似乎必须在断点之前使用名称空间,因此,当您点击程序集时,它已经加载。是的,这就是问题所在,谢谢!虽然我对这个结果不满意-是否有任何方法可以强制using System.Linq语句不被优化?这就是为什么您可能在同一文件的其他地方使用Linq表达式的原因。在新的课堂上尝试同样的方法。using语句将变灰,因为您没有在文件中的任何位置使用LINQ。在这种情况下,LINQ在“监视”窗口和“立即”窗口中不可用。