如何在.NET中从字典中选择前10个?

10

我有一个像这样排序的字典:

var sortedDict = (from entry in dd 
                  orderby entry.Value descending  select entry
                 ).ToDictionary(pair => pair.Key, pair => pair.Value);

如何从已排序的字典中选择前10个元素?


2
提高接受率。接受那些帮助你解决问题并增加你知识的答案。 - Hiren H Patel
5个回答

28

根据您在查询中提到的降序,我认为您需要最后10次出现。如果是这样的话

  var sortedDict = (from entry in dd orderby entry.Value descending select entry)
                     .Take(10)
                     .ToDictionary(pair => pair.Key, pair => pair.Value) ;


  var sortedDict = dd.OrderByDescending(entry=>entry.Value)
                     .Take(10)
                     .ToDictionary(pair=>pair.Key,pair=>pair.Value);

如果你需要前10个,只需删除descending即可正常工作。

var sortedDict = (from entry in dd orderby entry.Value select entry)
                     .Take(10)
                     .ToDictionary(pair => pair.Key, pair => pair.Value) ;


var sortedDict = dd.OrderBy(entry=>entry.Value)
                     .Take(10)
                     .ToDictionary(pair=>pair.Key,pair=>pair.Value);

5

由于您将字典排序为降序,因此选择前10个结果将选择前10名:

var sortedDict = (from entry in dd 
                  orderby entry.Value descending  
                  select entry
                  ).Take(10)
                  .ToDictionary(pair => pair.Key, pair => pair.Value);

1

1
你需要使用Take()方法:
var sortedDict = (
    from entry in dd 
    orderby entry.Value descending
    select entry)
    .Take(10)
    .ToDictionary(pair => pair.Key, pair => pair.Value);

1
var sortedDict = (from entry in dd orderby entry.Value descending select entry)
                 .Take(10).ToDictionary(pair => pair.Key, pair => pair.Value);

如果您先取出前10个元素,然后将它们转换为字典,这样会更有效率。如果反过来,它会先将所有元素转换为字典,然后再从中取出前10个。如果我们需要选择的列表很大,这将影响效率。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接