我的一个朋友说,在 Linq 中作为参数传递给 OrderBy() 的委托函数只对每个元素求值一次。考虑以下情况:var list2 = list.OrderBy(item => item.ComputationallyExpensiveFunction()).ToList();真的ComputationallyExpensiveFunction()定义为只对列表中的每个元素评估一次,还是在某些情况下可以对同一项目调用多次?
2 回答

慕田峪4524236
TA贡献1875条经验 获得超5个赞

元芳怎么了
TA贡献1798条经验 获得超7个赞
只有一次。你可以通过这样做来确认它:
var result = new int[] { 5, 3, 1, 4, 2 }.OrderBy(item =>
{
Thread.Sleep(500);
Console.WriteLine(item);
return item;
});
Console.WriteLine(String.Join(", ", result));
输出:
5
3
1
4
2
1, 2, 3, 4, 5
- 2 回答
- 0 关注
- 137 浏览
添加回答
举报
0/150
提交
取消