2011-02-10 16 views
0

誰も助けることができますか?LINQ:階層オブジェクトで "Deep"を選択していますか?同じ親を持つすべての子を選択しますか?

私は現在、オブジェクト参照とその親のオブジェクト参照を格納するMemberというクラスファイルを持っています。私は "多くの"メンバーを含むリストを持っています。これはフラットファイルシステムが本当に好きですが、linqでうまくいくので、Xの親を持つすべての子を見ることができます.ParentプロパティのObject参照フィールドを使用します。

私はクラスファイルを再作成し、メンバーのリストを保持し、Parentプロパティを削除する新しいフィールドを追加することを考えていました。この方法では、私は1つのオブジェクトしか持ちませんが、希望は意味をなさないでしょうか? :-)

私はこの新しいオブジェクトを持っているので、どのようにlinqを使って特定の親のすべての子を得ることができますか?直接の子孫ですか?ファイルを平坦化すること、すなわち、アイテムをLISTの一部である単一のオブジェクトとして返すことが可能になるであろう。

どの方法が優れているか、つまり私が現在持っているものと階層的なアプローチのいずれについても、何かコメントを聞きたいです。事前に

おかげであなたは、階層コレクションを行う

+1

サンプルコードは良いでしょう、そうでなければこれはすべて仮説です – BrokenGlass

+0

私は@BrokenGlassに同意します。あなたの質問を説明するためのコードサンプルを提供すれば、あなたの意図は**ますます明確になります。 –

答えて

0

いつでも、この種の問題に対処するために、複数の異なるデータ構造があることを覚えておいてください。かなり複雑なものがありますが、驚くべきパフォーマンスをもたらします。基本的には、コレクション全体を含む整数からキーを離した辞書で構成されます。オブジェクト自体は親関係を保持し、遅延読み込みのHashSet子コレクションを持っています。これにより、ツリーの任意のレベルにあるオブジェクトの親または子のコレクションを簡単に取得できます。

コメントは正しいですが。いくつかのサメルコードがなければ、私はあなたにこれがどのように見えるかの例を与えることはできません。これはすべて理論的なものです。

関連する問題