c# – 在linq中使用OrderBy()?

c# – 在linq中使用OrderBy()?,第1张

概述我需要修改一个集合,以便我可以对其中的项目序列进行排序. 所以我做的事情如下: IEnumerable<ItemType> ordered = myItems.OrderBy( (item) => item.Age); 但是,我想修改myItems集合本身以获得有序序列……是否可能? 我想要的东西: myItems.SomeActionHere // This should modify myIt 我需要修改一个集合,以便我可以对其中的项目序列进行排序.

所以我做的事情如下:

IEnumerable<ItemType> ordered = myItems.OrderBy( (item) => item.Age);

但是,我想修改myItems集合本身以获得有序序列……是否可能?

我想要的东西:

myItems.someActionHere // This should modify myItems in place.

这可能是一个新手或菜鸟问题.对于那个很抱歉.

解决方法 如果它是一个数组,您可以使用 Array.Sort.这将执行就地排序而不重复引用/值.

但是,同样地,您可以将.ToArray()或.ToList()标记到linq语句的末尾,以“实现”有序的可枚举,如果重复引用不是问题(通常不是).

例如:

myItems = myItems.OrderBy(i => i.Age).ToArray();

如果你绝对需要它作为另一个ReadonlyCollection实例 – 你可以这样做:

myItems = new ReadonlyCollection<ItemType>(myItems.OrderBy(i => i.Age).ToArray());

注意.ToArray()的工作原理是因为数组实现了IList< T>.即使它们不可修改.

或者 – 也有Array.AsReadOnly – 打开它的头:

myItems = Array.AsReadonly(myItems.OrderBy(i => i.Age).ToArray());

除了是一个较短的代码行,我没有看到太多的好处 – 除非减少角括号对你很重要:)

总结

以上是内存溢出为你收集整理的c# – 在linq中使用OrderBy()?全部内容,希望文章能够帮你解决c# – 在linq中使用OrderBy()?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1223511.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-05
下一篇2022-06-05

发表评论

登录后才能评论

评论列表(0条)

    保存