这是“更好”,更快还是更容易阅读:
var viewsOnSheet = templateSheet.GetAllViewports()
.Select(x => doc.GetElement(x))
.Cast<Viewport>()
.Select(x => doc.GetElement(x.ViewId))
.Cast<View>();
......比这个:
foreach (ElementId id in templateSheet.GetAllViewports())
{
Viewport vp = doc.GetElement(id) as Viewport;
View v = doc.GetElement(vp.ViewId) as View;
}
他们都工作,我只是好奇是否有一些编程标准,我会违反这么多嵌套的Linq调用。什么更容易理解?我个人倾向于foreach
循环。
谢谢!
答案 0 :(得分:3)
对于Linq到对象,具有foreach
的代码总是略微快于等效的LINQ调用,因为在最后LINQ在几次方法调用之后最终会出现类似的foreach
。对于Linq-to-SQL / Linq-to-XML等效代码,使用较少的函数调用也会更快,因为您执行的代码更少。
请注意,更复杂的LINQ表达式的正确匹配代码可能不容易编写(尝试正确编写GroupBy
)并且肯定不会短于LINQ。
这种性能对您的应用程序是否重要 - 根据您的特定性能目标来衡量自己。
代码风格严格取决于个人偏好 - 选择适合您/您团队的代码。