如何在调试时评估延迟的Linq语句?

时间:2010-04-23 22:43:22

标签: c# linq debugging visual-studio-2010 deferred-execution

我在VS2010中进行调试,我想检查一个字符串值,但我可以通过手表,悬停,本地等方式向我显示的调试器是:

"System.Linq.Enumerable+<TakeIterator>d__3a`1[System.Char]"

我不关心是否存在过早评估的副作用或其他什么,我只是想看看如果我现在在当前断点处评估表达式将会评估什么。

这是怎么做到的?我也可以通过以前评估的方式更改我的代码吗?当我没有调试时,我不在乎......但只是想知道。

  

如果它是相关的......(我怀疑它。)我正在填充一个新的   保存之前的实体对象   到数据库...某些字段分配了LINQ语句,我不确定它们何时在EF的封面下进行评估。数据库更新失败,'字符串或二进制数据将被截断...所以我试图找到太长的字段。

2 个答案:

答案 0 :(得分:5)

答案 1 :(得分:2)

这已经很晚了,可能会也可能不会适用于最初提出的问题,但我前段时间发现了Bart De Smet关于编码技术的文章,以帮助Linq to Objects调试:

http://community.bartdesmet.net/blogs/bart/archive/2009/04/23/linq-to-objects-debugging.aspx

我还没有尝试过,但我觉得它看起来很有趣。