如何使用Linq比较Dictionary中的值

时间:2014-03-06 22:24:55

标签: c# linq dictionary

我有一个返回Dictionary的函数。关键=玩家,价值=得分。 现在我想比较得分并使用新的重新排列列表创建一个新的词典,其中最高分位于顶部。

每当我使用GroupBy时,它会自动创建Dictionary

所以,如果我做这样的事情

Dictionary<string, int> player = playersRank.getRoundRank ().GroupBy (v => v.Value).Select(k => k.Key);

我得到Dictionary<int, <string,int>>

我如何按值排序,但得到字典作为回报?

1 个答案:

答案 0 :(得分:0)

您的结果集合不能是字典,因为字典不是有序集合。您有一些选项,例如您可以使用KeyValuePair

列表
List<KeyValuePair<string, int>> sortedScores;
sortedScores = playersRank.getRoundRank().OrderByDescending(v => v.Value).ToList();

您也可以使用许多其他类型(甚至创建自己的类),这完全取决于您在创建后使用此排序分数列表的方式。如果您使用更多详细信息更新您的问题,我们可能会为您提供更好的答案,说明您应该使用哪种类型的收藏。