こんにちは私は質問をよりよく説明するために更新しています。linqの親IDからすべての子要素と孫要素を取得する方法
私はこの
class MenuModel
{
public int ID { get; set; }
public int MenuID { get; set; }
public string MenuItem { get; set; }
public Nullable<int> ParentID { get; set; }
public string ImagePath { get; set; }
public List<MenuModel> Children { get; set; }
}
は今、私は10をmenuID属性たルートノードの並べ替えサービスのリストにしたいように私は、モジュールクラスを作成しているこの
のような親子関係を有するテーブル構造を持っています。
これは私がまだ行っているものです
List<MenuModel> lstMenu = new List<MenuModel>();
NeelamWPFEntities _entity = new NeelamWPFEntities();
var recordlist = _entity.Menus.Where(x => x.MenuID == 10 || x.ParentID == 10).ToList();
foreach (var item in recordlist)
{
MenuModel objMenu = new MenuModel();
objMenu.ID = item.ID;
objMenu.MenuID = item.MenuID;
objMenu.MenuItem = item.MenuItem;
objMenu.ParentID = item.ParentID;
objMenu.ImagePath = item.ImagePath;
lstMenu.Add(objMenu);
}
lstMenu.ForEach(v => v.Children = lstMenu.Where(vv => vv.ParentID.Equals(v.MenuID)).ToList());
lstMenu = lstMenu.Where(u => u.ParentID == null).ToList();
return lstMenu;
私は2レベルの子のみを取得します。私はルート再オーダーサービスのNレベルの子を取得します。
Plaeseヘルプ、 Thankx
これは再帰的です。テーブルがうまく設計されていないことを意味します。 –
LINQをサポートしていない[再帰CTE](http://stackoverflow.com/search?q=recursive+cte+linq)が必要です。 –
はうまく設計されていません。私は親子関係を提供しました。 –