如何最好地将List转换为SortedList?是否有不必遍历它的好方法?使用OrderBy()是否有巧妙的方式来做到这一点?
总结:请阅读所有答案和评论。
如何最好地将List转换为SortedList?是否有不必遍历它的好方法?使用OrderBy()是否有巧妙的方式来做到这一点?
总结:请阅读所有答案和评论。
var x = new List<int>() { 3, 2, 1 };
1 是微不足道的
x.Sort();
2是微不足道的
// sx is an IOrderedEnumerable<T>, you can call ToList() on it if you want
var sx = x.OrderBy(i => i);
通过复制,3非常简单
var s = new SortedList<int,int>(t.ToDictionary(i => i));
更高效地完成任务:
var s = new SortedList<int,int>();
foreach (var i in x) { s[i] = [i]; }
我不明白为什么你要这样做,但是既然你想做,那就去吧。
var list = new List<string>();
var sortedList = new SortedList<string, string>(list.ToDictionary(s => s));
现在我不知道这有多有效率,但这只是一行代码 :) 在这个例子中,我只是把字符串本身用作选择器。在实际情况中,你应该提前知道想要使用什么作为选择器。
List unsortedPersons = new List();
// ... Populate unsortedPersons ...
var sorted = from person in unsortedPersons
orderby person.Name
select person;
LINQ提供了一个ISortedEnumerable,我认为这可能已经足够满足您的需求。List<T>
是一个智能数组,而 SortedList<T, U>
是一个键/值二叉树。由于它们的结构之间没有关系,所以除了将列表中的每个元素放入树中,不可能有更有效的方法来完成此操作。SortedList
”,那么可以通过 List.Sort()
或适当的 OrderBy()
对列表进行排序,这很简单。