Что означает "лучший" (учитывая скорость и читаемость), чтобы определить, пуст ли список? Даже если список имеет тип IEnumerable<T>
и не имеет свойства Count.
Сейчас я подбрасываю между этим:
if (myList.Count() == 0) { ... }
и это:
if (!myList.Any()) { ... }
Я предполагаю, что второй вариант быстрее, так как он вернется с результатом, как только он увидит первый элемент, тогда как второй вариант (для IEnumerable) должен будет посетить каждый элемент, чтобы вернуть счет.
Как говорится, второй вариант выглядит как читаемый для вас? Что бы вы предпочли? Или вы можете придумать лучший способ проверить пустой список?
Изменить @lassevk ответ кажется наиболее логичным, в сочетании с небольшим количеством проверок времени, чтобы использовать кешированный счет, если это возможно:
public static bool IsEmpty<T>(this IEnumerable<T> list)
{
if (list is ICollection<T>) return ((ICollection<T>)list).Count == 0;
return !list.Any();
}