我有一个Dictionary
,我想将其转换为SortedDictionary
.如何在C#3.0中使用LINQ扩展方法执行此操作?
编辑:当Marc和Jared回答时,通用尖括号不在原始问题中.
编辑此答案是在编辑之前; 要获得更新问题的答案,请参阅此回复.
为什么要使用LINQ?有一个构造函数:
new SortedDictionary(existing);
你可以加一个ToSortedDictionary
- 但我不会打扰......
不需要LINQ.SortedDictionary有一个构造函数来进行转换.
public SortedDictionaryConvert (Dictionary map) { return new SortedDictionary (map); }
看起来好像你要求一种优雅的方式来Dictionary
把它变成一个SortedDictionary
(注意它的值Dictionary
现在是关键SortedDictionary
).我没有看到任何答案解决这个问题.
您可以创建一个如下所示的扩展方法:
static class Extensions { public static DictionaryAsInverted (this Dictionary source) { var inverted = new Dictionary (); foreach (KeyValuePair key in source) inverted.Add(key.Value, key.Key); return inverted; } }
您的应用程序代码如下所示:
using System; using System.Linq; using System.Collections.Generic; class Program { static void Main() { var dict = new Dictionary(); dict.Add("four", 4); dict.Add("three", 3); dict.Add("two", 2); dict.Add("five", 5); dict.Add("one", 1); var sortedDict = new SortedDictionary (dict.AsInverted()); } }