8

次のようにソートされた辞書があります。

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

このソートされた辞書からトップ 10 を選択するにはどうすればよいですか?

4

5 に答える 5

25

クエリで降順について言及しているように、最後の 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);
于 2012-04-21T06:00:30.640 に答える
5

辞書を注文したので、最初の 10 個の結果を ing すると、次の 10 個が選択されdescendingます。TakeTOP

var sortedDict = (from entry in dd 
                  orderby entry.Value descending  
                  select entry
                  ).Take(10)
                  .ToDictionary(pair => pair.Key, pair => pair.Value);
于 2012-04-21T06:00:23.787 に答える
1

Take(10)を使用するだけです

于 2012-04-21T06:01:07.270 に答える
1

Take()メソッドを使用する必要があります。

var sortedDict = (
    from entry in dd 
    orderby entry.Value descending
    select entry)
    .Take(10)
    .ToDictionary(pair => pair.Key, pair => pair.Value);
于 2012-04-21T06:01:58.050 に答える
1
var sortedDict = (from entry in dd orderby entry.Value descending select entry)
                 .Take(10).ToDictionary(pair => pair.Key, pair => pair.Value);

最初に 10 を取得してから辞書に変換すると、より効率的になります。その逆の場合は、最初にそれらすべてを辞書に変換してから、そこから 10 を取り出します。選択するリストが大きい場合、これは効率に影響します。

于 2012-04-21T06:06:30.203 に答える