【发布时间】:2013-09-27 20:03:22
【问题描述】:
我正在尝试调试其他开发人员编写的代码,而 LINQ 表达式使这项任务变得很痛苦。我不知道如何调试复杂的 LINQ 表达式,所以谁能告诉我没有它们的等效代码是什么?
instanceIdList.AddRange(
strname.Instances
.Where(z => instancehealthList.Find(y => y.InstanceId == z.InstanceId
&& y.State == "InService") != null)
.Select(x => x.InstanceId)
.ToList()
.Select(instanceid => new ServerObj(servertype, instanceid))
);
这也写得好吗?一般来说,这种 LINQ 是鼓励还是反对?
【问题讨论】:
-
我会将它分成几行以使其更易于阅读和调试,但它没有任何“错误”。
-
from x in collection .... select x或collecton.Select()是否都是 LINQ,所以我不确定您所说的“等效代码”是什么意思。我们是在直接使用 SQL 吗? -
我想我不太确定每次迭代后如何调试。
-
@BradChristie For Loops 更适合我
-
我会在
ServerObj的构造函数中放置一个断点并从那里开始,如果这不是 Linq2Entities,您也可以将 Where 子句放在{ ... }部分中,让您在其中放置断点也是。