解決
あなたは、ほとんどのすぐ隣、最低を除いて、 SortedDictionary<T, U>
の説明しましたあなたは多くの困難もなく、自分で実装することができます/次に高い値のバイナリ検索、ます。
SortedDictionary
があなたのために不十分であることが特別な理由はありますか?
他のヒント
C5収集LIBSからTreeSetのをリッピングます。
これはまさにPowerCollectionsでOrderedDictionaryです。これは、スタートキー/終了キーを設定し、その範囲内のすべての値をスキャンする機能を追加していつも同じSortedDictionary(ジェネリック医薬品との赤黒木)までです。
それは初めに開始され、あなたの式を実行します:SortedDicionaryはコレクションの先頭から始まり、唯一のMoveNext()の呼び出しを可能にするので、あなたは、LINQを使用していても何も魔法の出来事があるGetEnumeratorメソッド()関数を公開できます一つ一つのノードに、順番に、それはあなたのLINQの式に一致するものが見つかるまで。
OrderedDictionaryは、特定のキーに以前に列挙子を取得し、それはO(ログn)のルックアップを行う機能を有している。
しかし注意の単語:PowerCollections OrderedDictionaryで列挙子は「歩留まり」とメモリ使用量と列挙パフォーマンスを使用して実装されているが、少なくともO(N ^ 2)である...あなた自身がそれを実現するために実装を変更することができます伝統的な列挙子とこれらの問題の両方が離れて行きます。私が今までの時間を見つけることができる場合、私はCodePlexににそのパッチを提出します。
所属していません StackOverflow