Подтвердить что ты не робот

Проверьте, что IEnumerable <T> содержит 1 элемент без подсчета или использования Single

Как узнать, содержит ли мой список один и только один элемент без Count или Single?

Возможный обман Эффективный метод Linq Enumerable 'Count() == 1'

4b9b3361

Ответ 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.