我正在尝试使用 LINQ 对我的 Umbraco (v7) 内容树中的所有节点进行分组,但有一个条件:如果节点具有特定的文档类型,则该节点及其子节点将被分组在一起。
因此,在以下示例中,括号中的别名表示节点的 doctype 别名:
Page 1 ('Page')
Child 1 ('Page')
Page 2 ('Page')
Page 3 ('Page')
Page 4 ('Article')
Child 2 ('Text')
Child 3 ('Text')
Child 4 ('Text')
第 4 页与第 1 页具有不同的文档类型,因此第 4 页及其子项应组合在一起,而第 1 页的子项未分组,因为它具有 ('Page') doctype。所有节点的计数应为“8”,过滤的节点计数应为“5”。
我对此查询的第一次尝试是执行以下操作:
var results = from x in nodes
(x.DocumentTypeAlias == "Article" ?
group x by x.AncestorOrSelf().Id into z :
group x by x into z)
select new{Id = z.Key};
但是,这会导致错误消息"Invalid expression term 'group'"。有没有解决方案和/或我的逻辑完全错误?