给定一个包含数千个对象的列表,如下所示:
var list = new List<PointAddress>();
list.Add(new PointAddress { Line = 1, Number = 100f });
list.Add(new PointAddress { Line = 1, Number = 101f });
list.Add(new PointAddress { Line = 1, Number = 105f });
list.Add(new PointAddress { Line = 1, Number = 106f });
list.Add(new PointAddress { Line = 2, Number = 103f });
list.Add(new PointAddress { Line = 2, Number = 104f });
创建没有间隙的范围(基于 Number 属性)的最佳方法是什么,如下所示?如果 Number 属性中的差异 > 1,那么它是一个间隙,Number 应该在不同的组中。
第 1 组
行 = 1,编号 = 100f
行 = 1,编号 = 101f
第 2 组
行 = 1,编号 = 105f
行 = 1,编号 = 106f
第 3 组
行 = 2,编号 = 103f
行 = 2,编号 = 104f
基本上,如果 Gap > 1 那么它应该按 Line 在不同的组中。
如果行不同,则它是不同的组。如果 Number 是相邻的数字并且 Line 是相同的,那么它必须在同一个组中,如示例中所示。第 1 行分为 2 组 - 第 1 组和第 2 组,因为 Number 不相邻。