2011-07-14 6 views
1

私は、例えば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); 
+3

あなたの質問/問題は何ですか? –

+0

この特定のクエリにPLINQを使用することを決めた理由は何ですか? – Nix

答えて

1
dic.AsParallel().First(y => y.Value == dic.Select(x => x.Value).Select(x => x.Max())).Key 
3

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)); 
0

何のOrderBy(X => x.Value)1次回について()?

+0

私のコードを並列化する必要があります。 – EMAI

関連する問題