Только в случае, если у вас есть List<T>
:
Все упомянутые алгоритмы с SingleOrDefault()
/ FirstOrDefault()
требуют двух обходов из списка:
1) первый, чтобы найти элемент по критериям
2) второй, чтобы найти индекс элемента по его значению, найденному в шаге # 1
Вместо этого сделать это немного эффективнее:
int index = list.FindIndex(i => criteria);
if (index >= 0)
list.RemoveAt(index);