親ノードを削除するとすべての子ノードが自動的に削除されるように、リストをツリーに変換することは可能ですか?
この理由は、再帰的なカテゴリがあり、子カテゴリを除くすべてのカテゴリを (再帰的に) 表示したいためです。
このシナリオでわかるように、赤いノードを削除すると、すべての緑のノードが自動的に削除されます。私のオプションは何ですか?
違いがある場合は、これが私が使用しているモデルです。
public class Category
{
public int Id { get; set; }
public int? RootCategoryId { get; set; }
public virtual Category RootCategory { get; set; }
public virtual ICollection<Category> ChildCategories { get; set; }
}
これは私がこれまでに持っているものです
// This would eliminate only current category but not its children = bad
var availableCategories = _db.Categories.Where(x => x.Id != currentlyEditedId);
たとえば、カテゴリを編集したい場合は、 を呼び出します_db.Categories.Where(x => x.Id != currentlyEditedId);
。これにより、現在のカテゴリが削除されます (図では赤いカテゴリが削除されます) が、緑色のカテゴリは残ります。
赤いものを削除すると、緑のものも削除されるようにするにはどうすればよいですか?
最後に、写真のすべての黒いアイテムのリストが必要です。