Я искал какой-нибудь быстрый и эффективный способ объединения элементов в массиве.Это мой сценарий.Коллекция отсортирована по.Соседний элемент не обязательно отличается на 1, то есть могут быть промежутки между последним To и следующим From, но они никогда не перекрываются.
var list = new List<Range>();
list.Add(new Range() { From = 0, To = 1, Category = "AB" });
list.Add(new Range() { From = 2, To = 3, Category = "AB" });
list.Add(new Range() { From = 4, To = 5, Category = "AB" });
list.Add(new Range() { From = 6, To = 8, Category = "CD" });
list.Add(new Range() { From = 9, To = 11, Category = "AB" }); // 12 is missing, this is ok
list.Add(new Range() { From = 13, To = 15, Category = "AB" });
Я бы хотел, чтобы вышеуказанная коллекция была объединена таким образом, чтобы первые три элемента (это число могло варьироваться от как минимум 2 элементов до целого числа, удовлетворяющего условию) стали одним элементом.Невозможно объединить элементы с другой категорией.
new Range() { From = 0, To = 5, Category = "AB" };
Так что итоговая коллекция будет иметь всего 4 элемента.
0 - 5 AB
6 - 8 CD
9 - 11 AB // no merging here, 12 is missing
13 - 15 AB
У меня очень большая коллекция с более чем 2.000.000 предметовхотел бы, чтобы это было максимально эффективно.