【发布时间】:2012-07-13 03:19:39
【问题描述】:
我是 linq 的新手。所以有时只是不明白 linq 是如何工作的。所以VS2010 IDE中有任何工具或内置机制来详细调试linq执行。假设我有这个 linq 查询
var to_search = new[] { "Geo", "JCB" };
var result = from sr in list
let w = to_search.FirstOrDefault(ts => sr.Title.ToLower().Contains(ts.ToLower()))
where w != null
let a = new {sr=sr, word=w.ToLower()}
group a by a.word into g
orderby g.Count() descending
let sorted = g.OrderByDescending(a=> a.sr.Title.Select((c, i) => a.sr.Title.Substring(i)).Count(sub => sub.ToLower().StartsWith(a.word)))
from a in sorted
select a.sr;
var completeList = result.Concat(list.Except(result));
如何详细调试上面的 linq 查询。请指导我。谢谢。
【问题讨论】:
-
为什么不把它分解成小块并为每一块编写单元测试呢?然后给整体写个单元测试?
-
调试 LINQ 结果的部分困难在于它将默认为 IEnumerable
并被延迟评估,因此传统的 VS IDE 调试工具只能帮助您到此为止。如果你想在 LINQ 中涂鸦并玩弄结果,我推荐 LINQPad。 -
LINQPad 如何帮助我调试结果。如何在那里设置断点。寻求建议。
标签: c# linq debugging linq-to-objects