Вы можете использовать перегрузку .Where
, которая использует индекс - конечно, это также использует тот факт, что числа - это массив с оператором индекса:
int[] numbers = new[] { 1, 2, 3, 5, 8, 9 };
int[] followNumbers = numbers.Where((x, idx) =>
(idx >=1 && numbers[idx-1] == x-1
|| (idx < numbers.Length-1
&& numbers[idx+1] == x+1) ))
.ToArray();
Отредактировано для захвата всех чисел, которые являются частью «острова» последовательных чисел, с размером острова> 1 - это означает, что вам нужно смотреть вперед и назад от каждого числа, чтобы определить, является ли предшественник или преемник последовательным .
В данном примере вывод {1,2,3,8,9}
.