参考类型OrderByDescending

时间:2013-05-30 08:33:50

标签: c# .net visual-studio-2010 .net-4.5

我现在正在使用OrderByDescending对IEnumerable集合的元素进行排序,而我所做的就是分配回同一个集合。

this.InputParts =
     this.InputParts.OrderByDescending(lazy => lazy.Metadata.Priority);

从msdn,似乎它有一个延迟的返回对象。 (它有一个返回值,类似于我可视化为C ++中的值传递)

我想,应该有一些可以执行引用类型排序的东西。

说,而不是

this.InputParts =
     this.InputParts.OrderByDescending(lazy => lazy.Metadata.Priority);
我们只是说,

//shall itself reorder the collection!
this.InputParts.SomeMSDNFunction(lazy => lazy.Metadata.Priority);

(我想回到同一个列表可能会带来性能问题。顺便说一下,我只是猜测!)

1 个答案:

答案 0 :(得分:1)

如果InputParts的类型是某种材料集合,例如List<T>或数组,则表示do exist等函数;他们在调用时就地重新排序。

在更一般的情况下,它只是IEnumerable<T>,不可能在可枚举对象实例上“强制执行命令”,因为这需要替换生成枚举的代码。由于这显然是不可行的,你唯一能做的就是包装你自己的排序代码,这就是LINQ所做的。结果与初始示例一样(返回某事的新实例,并且某些事情强加了排序顺序)。