私はメニューオブジェクトのコレクションを持っており、各メニューオブジェクトは複数の子メニューを持つことができ、複数の子メニューなどを持つこともできます。C#でネストされたオブジェクトのフィルタリング
MenuID
MenuName
IsActive
Children
MenuID
MenuName
IsActive
Children
MenuID
MenuName
IsActive
Children
アクティブなメニューのみをフィルタリングしたいと考えています。これを行う方法?
私は再帰的だが運がないと試してみる。
private void FilterDeletedRecord(List<Menu> menus)
{
if (menus != null && menus.Count > 0)
{
foreach (Menu item in menus)
{
if (item.Children != null && item.Children.Count > 0)
{
item.Children = item.Children.Where(x => !x.IsDeleted).ToList();
if (item.Children != null && item.Children.Count > 0)
{
foreach (Menu m in item.Children)
{
if (m.Children != null && m.Children.Count > 0)
{
FilterDeletedRecord(m.Children);
}
}
}
}
}
}
}
あなたはフィルタの子供たちと、元のメニューオブジェクトを返すために何の非破壊方法はありません@mark_h –
を試してみましたまであなたのコードを投稿してください。一致するIDを持つ新しいメニューオブジェクトを作成するか、呼び出し元に子のフィルタリングを遅延させるか、非アクティブなメニュー項目を完全に完全に削除する必要があります。一つを選ぶ。 –
'IsActive'プロパティを使用して、私は思います – hvd