3


1

自己参照データベーステーブルから再帰的なデータ構造を埋める

この質問はhttp://www.matthidinger.com/archive/2009/02/08/asp.net-mvc-recursive-treeview-helper.aspxを参照しています

次のような表があるとします。

そして、次のような再帰的なデータ構造があります。

public class TreeNode
{
    public TreeNode(){}
    public string NodeId { get; set; }
    public string ParentId { get; set; }
    public string Name { get; set; }
    public IEnumerable Children { get; }
}

Linqを使用してテーブルからこの再帰的なデータ構造を埋めるにはどうすればよいですか?

*注:*この質問の目的のために、私はすでに完全に効率的なテーブルを持っていると仮定してください。つまり メモリに完全に常駐しているか、CTEを使用してアクセスしています。 実際、LinqからSQL DataContextから再帰オブジェクトに取得するLinqクエリを探しています。 おそらくForEachと再帰的な関数呼び出しが関係することを知っています。頭を悩ませることはできません。

前もって感謝します。

1 Answer


1


あなたの最善の選択肢は、CTEを使用してSQLの階層を照会することだと思います。 LINQ2SQLと階層/リレーショナルデータはあまりうまく混ざりません。 Linqの階層データ-オプションとパフォーマンスを参照してください。