如何从.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个转换为字典。 如果我们有一个可供选择的大型列表,这将影响效率。