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);
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);
コンストラクトが必要なようですMaxBy
。MoreLINQにはありますが、通常の 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));
dic.AsParallel().First(y => y.Value == dic.Select(x => x.Value).Select(x => x.Max())).Key
OrderBy(x => x.Value).First() はどうですか?