7

我有一个从字典中获取结果的 lambda 表达式。

var sortedDict = (from entry in dctMetrics 
                  orderby entry.Value descending 
                  select entry);

表达式拉回我需要的对,我可以在 IDE 的调试模式下看到它们。

如何将其转换回与源相同类型的字典?我知道 sortedDict 的 TElement 是 KeyValuePair,但我无法完全理解 ToDictionary 扩展方法的语法。我还尝试使用 var 结果分段构造一个新字典,但无济于事。

有没有这样的东西(功能方面):

var results = (from entry in dictionary 
               orderby entry.Value descending 
               select entry);
Dictionary<string,float> newDictionary = results as (Dictionary<string,float>);
4

1 回答 1

21

你可以这样做:

var newDictionary = results.ToDictionary(r => r.Key, r => r.Value);

将其读作“对于结果中的每一对,将该元素添加到新字典中,其中键将作为该对的键生成,值将作为该对的值生成。”

此外,仅基于您的示例代码 - 您应该记住 aDictionary<T, U>是作为哈希表实现的,因此它不会保持您放入其中的元素的顺序。如果您需要有序地图,请考虑使用 aSortedDictionary或 a 。SortedList

于 2009-12-28T17:58:11.990 回答