我想根据类层次结构的形成顺序对列表进行排序。
例如。
[ParentNode, ChildNode]
[A, B] //1st
[B, Y]
[Y, Z] //last
我不能按字符排序,我需要按父子关系排序。
[ParentNode, ChildNode]
[NULL, IDS]
[EFL, PEFL001]
[IDS, EFL]
[PCMN010, PCMN014]
[PEFL001, PCMN010]
[PEFL001, PCMN010]
在上面的示例中,您可以看到一些示例数据,该示例数据类似于当前查询的返回值。
Row(1)的父节点为NULL,因此可以将其标记为“起点”。问题是Row(2)(ChildNode)!= Row(3)(ParentNode)。遇到重复项时,它必须足够聪明以将它们堆叠在一起(没有特定顺序)
在下面您可以看到预期的结果。请注意,row(n).ChildNode = row(n + 1).ParentNode,但在堆栈时有重复项除外。 我需要能够在LINQ或SQL中做到这一点
[ParentNode, ChildNode]
[NULL, IDS]
[IDS, EFL]
[EFL, PEFL001]
[PEFL001, PCMN010]
[PEFL001, PCMN010]
[PCMN010, PCMN014]
答案 0 :(得分:0)
您应该可以使用df <- data.frame(
" " = c("Average age of Diagnosis", "Average Life Space", "Average Number of Dogs Diagnosised with MR"),
"2008-2018" = c(28, 27, 30),
"Sample size" = c(12,23,34),
stringsAsFactors = FALSE, check.names=FALSE)
或""
,并且都具有用于类型安全的泛型。
IComparable
IComparer
基本思想是您需要能够与该类型的另一个进行比较。比较器将返回-1、0或1,具体取决于哪个是第一个。您可以查看子对象,并在比较中做出确定。