C# Linq 结果 ToDictionary 帮助
-
21-09-2019 - |
题
我有一个从字典中获取结果的 lambda 表达式。
var sortedDict = (from entry in dctMetrics
orderby entry.Value descending
select entry);
该表达式拉回我需要的对,我可以在 IDE 的调试模式中看到它们。
如何将其转换回与源类型相同的字典?我知道 SortedDict 的 TElement 是 KeyValuePair,但我无法完全理解 ToDictionary 扩展方法的语法。我还尝试对 var 结果进行 foreach'ing 来分段构造一个新字典,但无济于事。
有没有这样的东西(功能方面):
var results = (from entry in dictionary
orderby entry.Value descending
select entry);
Dictionary<string,float> newDictionary = results as (Dictionary<string,float>);
解决方案
你可以这样做:
var newDictionary = results.ToDictionary(r => r.Key, r => r.Value);
读作“对于结果中的每一对,将该元素添加到新字典中,其中键将生成为该对的键,值将生成为该对的值。”
另外,仅根据您的示例代码 - 您应该记住 Dictionary<T, U>
是作为哈希表实现的,因此它不会维护放入其中的元素的顺序。考虑使用 SortedDictionary
或一个 SortedList
相反,如果您需要有序地图。
不隶属于 StackOverflow