【发布时间】:2020-01-18 19:49:44
【问题描述】:
在 C# 中,我有一组要转换为不同类型的对象。我想用 LINQ Select() 进行的这种转换需要按顺序执行多个操作。要执行这些操作,最好将多个Select() 查询链接在一起,例如
resultSet.Select(stepOneDelegate).Select(stepTwoDelegate).Select(stepThreeDelegate);
或者改为在一次调用中执行这三个步骤?
resultSet.Select(item => stepThree(stepTwo(stepOne(item))));
注意:这三个步骤本身是不一定的功能。它们旨在简明扼要地展示问题。如果这对答案有影响,请包含该信息。
【问题讨论】:
-
简短的回答是——通常没关系。后者的性能可能稍微更好,但ericlippert.com/2012/12/17/performance-rant.
-
这几乎肯定会因为基于意见而关闭 - 所以我不妨分享我的意见。我更喜欢前者,因为它更好地显示了流程(第 1 步的项目,然后是第 2 步,然后是第 3 步)。另外,您可以通过代码的不同方法完成投影的不同部分(即添加
Select调用)。但老实说,后者已经足够好了,因为程序员习惯于逆向阅读这些步骤(因为大多数程序代码都是这样编写的)。
标签: c# performance linq optimization query-optimization