【发布时间】:2017-04-22 23:51:32
【问题描述】:
我想根据 2 个条件对点云进行分组
在 Y 上很简单,所以我写了
pointcloudH.GroupBy(KVP => KVP.Value.Y),其中 KVP 是KeyValuePair<string,System.Drawing.Point>如果
X == (previousX + 1),现在我也想按 X 分组它 据我所知,我应该ThenBy(),但我必须在括号之间写什么?
这里有一个例子可以更好地说明我想要实现的目标
示例点云
(x|y) (1|1),(2|1),(4|1),(1|2),(2|3),(3|3),(4|3),(5|8),(9|10)
在第 1 步之后。看起来像这样
group1 (1|1),(2|1),(4|1)
group2 (1|2)
group3 (2|3),(3|3),(4|3)
group4 (5|8)
group5 (9|10)
在第 2 步之后。应该是这样的
group1 (1|1),(2|1)
group2 (4|1)
group3 (1|2)
group4 (2|3),(3|3),(4|3)
group5 (5|8)
group6 (9|10)
当前代码
var Hgroup = pointcloudH.OrderBy(KVP => KVP.Value.Y) // order by Y
.GroupBy(KVP => KVP.Value.Y) // groub by Y
.ThenBy(KVP => KVP.Value.X); // group by X ???
【问题讨论】:
-
我想你会想要
GroupBy而不是OrderBy,但这有点棘手...... -
@JonSkeet 哦,这只是一个复制粘贴错字:) 我会解决这个问题,但我仍然遇到同样的问题
-
@JonSkeet 所以它是固定的,我还添加了我当前的代码被剪断
标签: c# linq linq-group