2

我有两个类,正在尝试创建一个ObservableCollection<ClassA>,所以它基本上是一个树结构,因为这个父ObservableCollection级将有子集合,它是类型的ClassB,我的问题是:

我可以使用 LINQ 查询来获取然后ObservableCollection<ClassB>将其添加到ClassA. ObservableCollection所以它基本上是 subitems( ClassB) 被添加到父级,但 subitems( ClassB) 也有 subitems( ObservableCollection<ClassB>in 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;

}

所以结构会是这样的,

ParentA
-Child1
-Child2
   -Child3
     -Child4
   -Child5

要将 Child4 插入此结构,我可以使用 LINQ 查询ObservableCollection吗?如果是这样,怎么做?我需要将此项目添加到 Child3

4

2 回答 2

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();
于 2013-06-17T19:56:38.247 回答
0

您需要使用复合模式。查看http://en.m.wikipedia.org/wiki/Composite_pattern中提到的模式,您也可以将示例中给出的列表类型更改为任何接受集合的类型(甚至是可观察的集合)

于 2013-06-17T20:04:06.917 回答