Проверьте, что IEnumerable <T> содержит 1 элемент без подсчета или использования Single
Как узнать, содержит ли мой список один и только один элемент без Count
или Single
?
Возможный обман Эффективный метод Linq Enumerable 'Count() == 1'
Ответы
Ответ 1
Как насчет этого:
int limitedCount = myEnumerable.Take(2).Count();
Это даст вам:
- 0, если он был пуст
- 1, если он имел ровно 1 элемент
- 2, если у него было 2 или более элемента
... но он дает вам эти ответы, но только повторяет последовательность. Затем вы можете включить результаты.
Ответ 2
myEnumerable.Take(2).Count() < 2
Ответ 3
вместо того, чтобы использовать исключение, перебирайте перечислимое число и как только вы нажмете больше 1, выйдите из него.
Вам не нужно считать их всех... только 2 из них:)
Кроме того, использование исключений для управления потоком - плохая идея, потому что ее действительно дорогостоящий с точки зрения производительности.
Как показывает ответ @Jon Skeet, есть лучшие способы сделать это, поскольку интерфейс IEnumerable настолько хорошо разработан. Однако, если у него не были методы .Skip
и .Any()
(что применимо к другим языкам или местам, где вы просто просто итерации), вам нужно только пересчитать до 2.