引用类型orderby降序

本文关键字:降序 orderby 引用类型 | 更新日期: 2023-09-27 18:16:16

我现在使用orderbydescent来排序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);

(我猜分配回相同的列表可能会带来性能问题。顺便说一句,我只是猜测!)

引用类型orderby降序

如果InputParts的类型是某种材料集合,例如List<T>或数组,则您所描述的函数确实存在;它们在调用集合时就地重新排序。

在更一般的情况下,它只是一个IEnumerable<T>,不可能在可枚举对象实例上"强加顺序",因为这将要求替换生成枚举的代码。由于这显然是不可行的,您唯一能做的就是周围包装您自己的排序代码,这就是LINQ所做的。结果与您最初的示例一样(返回的新实例,并且该对象强制排序顺序)。