Учитывая класс:
class Control
{
public Control Parent { get; set; }
public List<Control> Children { get; set; }
}
и список:
List<Control> myControls;
Можно ли написать запрос linq, который выберет всех детей и внуков для данного элемента управления? Например, если дерево выглядит так:
GridA1
PanelA1
TextBoxA1
TextBoxA2
PanelA2
ListBoxA1
ListBoxA2
GridB1
PanelB1
TextBoxB1
Я бы хотел запрос, чтобы заданный список myControls, который содержит все вышеперечисленные элементы управления со свойствами Parent и Children, установленными как approriate, можно параметризовать с помощью PanelA1 и возвращать TextBoxA1, TextBoxA2, PanelA2, ListBoxA1 и ListBoxA2. Есть ли эффективный способ сделать это с linq? Я выбираю древовидную структуру из базы данных и ищу лучший способ отделить поддеревья, чем рекурсивная функция.