私は、例えばC#dictionary<int, double>
特定PLINQクエリ
選択
3 0.9
私の後
初期辞書
1 0.8
2 0.78
3 0.9
4 0.87
で最大値を持つ1つのIDを選択します現在のコード
dic.AsParallel().Max(x => x.Value);
私は、例えばC#dictionary<int, double>
特定PLINQクエリ
選択
3 0.9
私の後
初期辞書
1 0.8
2 0.78
3 0.9
4 0.87
で最大値を持つ1つのIDを選択します現在のコード
dic.AsParallel().Max(x => x.Value);
dic.AsParallel().First(y => y.Value == dic.Select(x => x.Value).Select(x => x.Max())).Key
MaxBy
の構造が必要なようです。私はMoreLINQに1を持っているが、あなたが書いたと思いますので、それは、オブジェクトへの通常のLINQには存在しません:
var result = dictionary.MaxBy(pair => pair.Value);
しかし、あなたがしたいと思う方法で並列化されないこと。あなたは、少なくともは、関連する値を含む独自の同等のタイプを作成したthis overload of 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));
あなたの質問/問題は何ですか? –
この特定のクエリにPLINQを使用することを決めた理由は何ですか? – Nix