如何从.NET中的字典中选择前10名?

我有一个字典,其排序如下:

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

如何从这个排序的字典中选择前10名?

正如您在查询中提到的那样,我假设您需要最后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); 

既然您订购了字典descending ,那么前10个结果将选择TOP 10:

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

只需使用Take(10)

您需要使用Take()方法:

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

如果先取10然后将它们转换为字典,这将更有效。 如果反之亦然,它将首先将它们全部转换为字典,然后将其中的10个转换为字典。 如果我们有一个可供选择的大型列表,这将影响效率。