次のようなリストに何千ものオブジェクトがあるリストがあるとします。
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 が同じ場合、例に示すように同じグループに属している必要があります。Number が隣接していないため、Line 1 は Group 1 と Group 2 の 2 つのグループに分割されます。