您能否建议如何在.NET 3.0(无LINQ)中对IEnumerable<byte> indexes
进行排序的任何解决方案? 当然,可以确定长度,创建数组,逐个元素复制,然后调用Array.Sort(array)
。但也许你可以提出其他建议吗?在没有LINQ的情况下订购IEnumerable
2
A
回答
6
只要您不使用2.0编译器(如:VS 2008/2010/2012),您可以使用LINQBridge,并使用.NET 2.0/3.0代码中的LINQ到对象。
其他懒惰的解决方案是:
List<byte> list = new List<byte>(indexes);
list.Sort();
// list is now a sorted clone of the data
0
由于您无法真正更改IEnumerable,因此您必须将数据复制到别的地方才能对其进行排序。
但是,请注意您正在排序字节,您可以使用Bucket Sort进行超高效排序。
0
1
不要以为搜索有没有其他解决办法,然后迭代在“手动”中,在C# 2.0
另一种创建数组的选项。
您可以创建一个List<>
var list = new List<byte>(indexes);
list.Sort(delegate(byte b1, byte b2)
{
//your comparison logic here
});
它更紧凑然后简单for
或foreach
迭代超过集合。
1
整个IEnumerable<>
必须在排序时阅读,所以没有办法解决这个问题。即使Linq to Objects方法Sort
也会将整个集合保存在内存中。
创建一个从IEnumerable<byte>
一个List<byte>
和排序是:
List<byte> list = new List<byte>(indexes);
list.Sort();
相关问题
- 1. 在这种情况下订购了多少次IEnumerable?
- 2. Linq - Orderby没有订购
- 3. 在没有发送时间的情况下在MySql中订购表格
- 4. 如何在没有$ args的情况下通过wordpress中的slug订购
- 5. 订购情况导致SQL
- 6. 在Linq订购
- 7. 订购调用继承的构造情况下,在C#中
- 8. 在没有订阅的情况下触发一个事件
- 9. 在没有订阅的情况下还原无效值
- 10. Mandrill:在没有模板的情况下使用取消订阅
- 11. SocketException在没有onError的情况下取消订阅请求
- 12. 如何在没有Linq的情况下查询DataGridView
- 13. 在这种情况下,我如何订购元素? - Django
- 14. 在这种情况下,我应该如何订购价格
- 15. 如何在正常情况下逆时针订购3点
- 16. WooCommerce订阅在没有试用期限的情况下创建订单
- 17. IEnumerable在没有实际调用的情况下过滤发生的地方
- 18. 订购LinQ c#
- 19. 订购LINQ
- 20. 订购了LINQ
- 21. SQL服务器 - 订购情况
- 22. 开关的情况下没有在JavaScript
- 23. 订购我的LINQ
- 24. LINQ OrderBy没有订购..没有改变..为什么?
- 25. 在使用LINQ的情况下
- 26. 笨:没有在某种情况下
- 27. 如何在没有标签的情况下在回购站上使用`git describe`?
- 28. 在没有克隆的情况下在特定提交时抓取git回购
- 29. 在没有克隆的情况下在回购中创建分支
- 30. 订购使用LINQ