如何在C#中订购字典?

Dan*_*iel 6 c# dictionary

编辑:谢谢杰森,这是一本字典并不重要.我只是希望运行时具有较低的运行时间.LINQ方法快吗?另外,我知道这不是主题,但是n => n是什么意思?

我有一个数字列表,我想制作另一个列表,其中包含最开头和最少的数字.

所以我做的是通过列表并检查数字x是否在字典中.如果不是那么我把关键x和值1.如果是那时我将值更改为值加1.

现在我想订购字典,以便我可以列出一个列表,其中列出的是开头最多,最少的列表.

我怎么能在C#中做到这一点?PS.运行时非常重要.

jas*_*son 11

所以听起来你有一个Dictionary<int, int>键表示你在列表中有一个整数的位置,相应的值表示整数出现的次数的计数.您是说要按频率按降序排序的计数来订购密钥.然后你可以说

// dict is Dictionary<int, int>
var ordered = dict.Keys.OrderByDescending(k => dict[k]).ToList();
Run Code Online (Sandbox Code Playgroud)

现在,听起来你开始使用List<int>哪个是你想要计算的值,并按计数排序.您可以在LINQ中快速执行此操作,如下所示:

// list is IEnumerable<int> (e.g., List<int>)
var ordered = list.GroupBy(n => n)
                  .OrderByDescending(g => g.Count())
                  .Select(g => g.Key)
                  .ToList();
Run Code Online (Sandbox Code Playgroud)

或者在查询语法中

var ordered = (from n in list
               group n by n into g
               orderby g.Count() descending
               select g.Key).ToList();
Run Code Online (Sandbox Code Playgroud)

现在,如果您需要拥有中间字典,您可以说

var dict = list.GroupBy(n => n)
               .ToDictionary(g => g.Key, g => g.Count());
var ordered = dict.Keys.OrderByDescending(k => dict[k]).ToList();
Run Code Online (Sandbox Code Playgroud)