我有两个类,我正在尝试创建一个ObservableCollection<ClassA>
,所以它基本上是一个树结构,因为这个父ObservableCollection
将有一个类型为ClassB
的子集合,My问题是:
我可以使用LINQ查询获取ObservableCollection<ClassB>
,然后将其添加到ClassA
的{{1}}。所以它基本上是子项(ObservableCollection
)被添加到父项,但子项(ClassB
)也有子项(ClassB
中的ObservableCollection<ClassB>
)
ClassB
所以结构将是这样的,
public ClassA
{
ObservableCollection<ClassB> classBItems = new ObservableCollection<ClassB>
string name = "Something";
}
public ClassB
{
ObservableCollection<ClassB> classBSubItems = new ObservableCollection<ClassB>
string name = "Something";
bool IsEnabled = false;
}
要将Child4插入此结构,我可以使用LINQ查询ParentA
-Child1
-Child2
-Child3
-Child4
-Child5
吗?如果是这样,怎么样?我需要将此项添加到Child3
答案 0 :(得分:0)
我不完全确定child4来自哪里,但根据您的上述结构,这将为您提供Child3。
var child3 = observableOfClassA
.SelectMany(a => a.classBItems) // flattens list to all classBItems
.SelectMany(b => b.classBSubItems) // flattens list to classBItems.classBSubItems
.Where(bSub => bSub.name == "child3s Name goes here") // replace with your where clause
.FirstOrDefault();
答案 1 :(得分:0)
您需要使用复合图案。看看http://en.m.wikipedia.org/wiki/Composite_pattern中提到的模式,你也可以将示例中给出的列表类型更改为接受集合的任何类型(甚至可观察的集合)