C#のLINQ結果ToDictionaryヘルプ
-
21-09-2019 - |
質問
私は辞書からの結果を取得するラムダ式を持っています。
var sortedDict = (from entry in dctMetrics
orderby entry.Value descending
select entry);
表現引っ張るが、私は必要なのペアをバックに、私は、IDEのデバッグモードでそれらを見ることができます。
私はこのバックソースと同じ種類の辞書変換する方法を教えてください。私はsortedDictのTElementがKeyValuePairですけど、私は完全にToDictionary拡張メソッドの構文を理解する問題を抱えています。私はまた、区分的にVaRの結果は、新しい辞書を構築foreach'ingしようとしたが、無駄に。
あり、このような何か(機能的に):
var results = (from entry in dictionary
orderby entry.Value descending
select entry);
Dictionary<string,float> newDictionary = results as (Dictionary<string,float>);
解決
あなたはこのようにそれを行うことができます:
var newDictionary = results.ToDictionary(r => r.Key, r => r.Value);
読むこと「結果の各ペアについて、鍵ペアのキーとして生成される新しい辞書にその要素を追加し、その値がペアの値として生成されるであろう。」と
また、ちょうどあなたのサンプルコードに基づいて - あなたはそれはあなたがそれに入れ要素の順序を維持しないようにDictionary<T, U>
は、ハッシュテーブルとして実装されていることを心に留めておく必要があります。あなたが注文したマップが必要な場合は、代わりにSortedDictionary
やSortedList
の使用を検討します。
所属していません StackOverflow