Другой метод (аналогичный тому, который вы используете сейчас).
Предположим, у вас есть массив целых чисел (или другой тип коллекции), подобный этому:
var myIDs = new int[] { 5101, 5113, 5102, 5103, 5110, 5104, 5105, 5116, 5106, 5107, 5108, 5112, 5114, 5115 };
Если он еще не упорядочен, OrderBy()
it:
myIDs = myIDs.OrderBy(n => n).ToArray();
Извлечь первое число, которое меньше (next number) + 1
:
int result = myIDs.Where((n, i) => (i < myIDs.Length - 1) && (n + 1 < myIDs[i + 1])).FirstOrDefault();
Если ни один из членов этой коллекции не удовлетворяет условию, возьмитепоследний и добавьте 1
:
result = result == default ? myIDs.Last() + 1 : result;