Почему бы просто не использовать All
, поскольку все члены коллекции должны соответствовать критериям ...
Пример
someVar.All(v => someVar.Contains(v + 1) || v == someVar.Last())
Тогда вам не нужно заказывать, и это лучше.
Вы могли бы отсортировать после этого шага или даже во время, если вам нужно, но я лично просто использовал бы отсортированную коллекцию и сделал бы, чтобы она работала для меня.
Вы могли бы получить значения, если вам нужно, после выполнения проверки, а затем вернуть результат проверки или скрыть его, если вы хотите по какой-то причине, через многострочную модификацию, приведенную выше, вместе со списком для хранения значений.
, например
someVar.All((v) => {
bool result = someVar.Contains(v + 1) || v == someVar.Last();
if(!result) someList.Add(v);
return true;
});
Проверка счетчика списка (который можно заказать) для ненулевого значения, чтобы указать, удовлетворяет ли оно или нет.