-1

我现在使用 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);

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

4

1 回答 1

1

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

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

于 2013-05-30T08:38:16.607 回答