c# – 在linq中使用OrderBy()?
发布时间:2020-12-16 00:20:23 所属栏目:百科 来源:网络整理
导读:我需要修改一个集合,以便我可以对其中的项目序列进行排序. 所以我做的事情如下: IEnumerableItemType ordered = myItems.OrderBy( (item) = item.Age); 但是,我想修改myItems集合本身以获得有序序列……是否可能? 我想要的东西: myItems.SomeActionHere /
我需要修改一个集合,以便我可以对其中的项目序列进行排序.
所以我做的事情如下: 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()); 除了是一个较短的代码行,我没有看到太多的好处 – 除非减少角括号对你很重要:) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |