1

C#で最大値を持つIDを1つ選択したいdictionary<int, double>

例えば

初期辞書

 1   0.8   
 2   0.78   
 3   0.9   
 4   0.87   

選択後

 3   0.9   

私の現在のコード

dic.AsParallel().Max(x => x.Value);
4

3 に答える 3

3

コンストラクトが必要なようですMaxByMoreLINQにはありますが、通常の LINQ to Objects には存在しないので、次のように記述します。

var result = dictionary.MaxBy(pair => pair.Value);

ただし、それはあなたが望む方法で並列化されません。少なくとも、関連する値を含む独自の比較可能な型を作成したこのオーバーロードを使用してみてください。ParallelEnumerable.Max

public class ComparablePair : IComparable<ComparablePair>
{
    // Have key and value, then implement IComparable<T> by
    // comparing values
}

次に使用します。

var result = dictionary.AsParallel()
                       .Max(pair => new ComparablePair(pair));
于 2011-07-14T12:07:28.053 に答える
1
dic.AsParallel().First(y => y.Value == dic.Select(x => x.Value).Select(x => x.Max())).Key
于 2011-07-14T12:57:56.747 に答える
0

OrderBy(x => x.Value).First() はどうですか?

于 2011-07-14T12:13:16.603 に答える