Вы можете использовать этот трюк с Zip и Skip, чтобы получить различия, а затем просто проверить их:
Dim differences = subset.Zip(subset.Skip(1), Function(a,b) b.Key - a.Key)
Dim valid = differences.All(Function(x) x <= 1)
По сути, это объединяет последовательность с самим собой на один элемент вперед и вычисляет разницу.Помните, что это оценивает subset
дважды.Это может или не может быть важно.
Если ключи уникальны, вы можете сделать это еще проще:
Dim valid = (subset.Last() - subset.First() = subset.Count() - 1)
Это работает, потому что, зная, что они отсортированы, уникальны иих различия не больше 1, тогда ключи должны быть в последовательности.Таким образом, количество ключей на единицу больше, чем разница между последним и первым (например, {11,12,13,14} => 14-11 = 4-1).