У меня есть простой высокотехнологичный список объектов «Группы товаров» (IQueryable).Каждая группа «ProductGroup» имеет коллекцию групп «Product», называемых «Children», целочисленное поле ParentId и логическое поле «IsEnabled».
public class ProductGroup
{
public int Id;
public int ParentId;
public ICollection<ProductGroup> Children;
public bool IsEnabled;
}
Я хочу иметь возможность вернуть дерево групп ProductGroups, где «IsEnabled»это правда.
В данный момент, если я делаю
ProductGroups.Where(x => x.IsEnabled)
Это возвращает включенные продукты.Если я делаю
ProductGroups.Where(x => x.ParentId == null)
Это возвращает корни.Я хочу иметь возможность возвращать полное дерево, исключая отключенные элементы, как можно проще (т.е. не использовать циклы for после запроса к коллекции).
ProductGroup1 (IsEnabled == true)
|
--------- ProductGroup2 (IsEnabled == true)
| |
| ----------- ProductGroup4 (IsEnabled == false)
|
--------- ProductGroup4 (IsEnabled == false)
т.е. вернуть ProductGroup1 с 1 дочерним элементом ProductGroup2
Спасибо