0
A
答えて
0
再帰的なツリー構造が必要です。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
FolderTree tree = new FolderTree();
tree.BuildTree();
}
}
public class FolderTree
{
public static FolderTree root { get; set; }
public int id { get; set; }
public List<FolderTree> children { get; set; }
static DataTable dt { get; set; }
public void BuildTree()
{
dt = new DataTable();
dt.Columns.Add("FolderID", typeof(int));
dt.Columns.Add("PARENT_ID", typeof(int));
dt.Rows.Add(new object[] { 1, 0 });
dt.Rows.Add(new object[] { 2, 0 });
dt.Rows.Add(new object[] { 3, 2 });
dt.Rows.Add(new object[] { 4, 1 });
dt.Rows.Add(new object[] { 5, 0 });
dt.Rows.Add(new object[] { 6, 4 });
dt.Rows.Add(new object[] { 7, 3 });
dt.Rows.Add(new object[] { 8, 0 });
dt.Rows.Add(new object[] { 9, 1 });
dt.Rows.Add(new object[] { 10, 8 });
dt.Rows.Add(new object[] { 11, 0 });
dt.Rows.Add(new object[] { 12, 11 });
dt.Rows.Add(new object[] { 13, 0 });
dt.Rows.Add(new object[] { 14, 0 });
dt.Rows.Add(new object[] { 15, 2 });
root = new FolderTree();
BuildTreeRecursive(0, root);
}
void BuildTreeRecursive(int parentID, FolderTree parent)
{
parent.id = parentID;
foreach(DataRow folder in dt.AsEnumerable().Where(x => x.Field<int>("PARENT_ID") == parentID))
{
if (parent.children == null)
{
parent.children = new List<FolderTree>();
}
FolderTree child = new FolderTree();
int childID = folder.Field<int>("FolderID");
parent.children.Add(child);
BuildTreeRecursive(childID, child);
}
}
}
}
関連する問題
- 1. 複数のデータテーブルの行を削除して元のデータテーブルに保存
- 2. データテーブルをフィルタリングする方法
- 3. あるデータテーブルから別のデータテーブルにスキーマをインポートしますか?
- 4. php mysqlデータテーブル同じページに保存して編集する
- 5. Powershellを使用してデータテーブルをCSV形式で保存する
- 6. 別のデータテーブルからデータテーブルに列を追加する方法
- 7. jqueryのデータテーブルの行をフィルタリングする
- 8. 別のクラスで作成されたデータテーブルにデータを保存しますか?
- 9. データテーブルをデータセットにマージし、データソースに変更を保存します
- 10. カスタム角度データテーブルのカラムによるフィルタリング
- 11. データテーブル - 検索;すぐにデータテーブルをフィルタリングしないでください
- 12. あるデータテーブルから別のデータテーブルへデータを転送する
- 13. 別のデータテーブルとDjangoの選択を使用してjqueryデータテーブルにデータをロード
- 14. ドロップダウンリストからデータテーブルをフィルタリングする
- 15. セッション変数を使用してデータテーブルに値を作成して保存する
- 16. フォーム新しいデータテーブルの既存の値に基づいて、データテーブル新しい
- 17. 私のデータテーブルを[txt]ファイルに保存する
- 18. データをフィルタリングしてデータテーブルにバインドします。
- 19. asp.net内の別のデータテーブルにコピーする
- 20. エンティティフレームワーク - 各ループなしでSQLサーバーにデータテーブルを保存
- 21. JSF、データテーブル内のデータテーブル
- 22. 日付範囲の間のデータテーブルのフィルタリング
- 23. C#データテーブルがセッションに保存されていません
- 24. C#sqliteは、より速い方法で別のデータテーブルにデータテーブルをコピーする
- 25. C#.AcceptChanges()を使用してSQL Serverのデータテーブルにデータを保存しない
- 26. データテーブルの属性をにデータテーブルに追加
- 27. Primefacesデータテーブルをフィルタリングできません
- 28. データテーブルをフィルタリングできませんか?
- 29. 別のデータテーブル内のデータテーブルの各ループの処理方法
- 30. 他のタブ内の別のデータテーブルのタブ内でデータテーブルを更新する
これまでに何を試みましたか?コードはありますか? – Joseph