2011-03-14 18 views
11

Sin contar todos los elementos en una colección IEnumerables<T> de elementos, ¿cuál es la mejor manera de detectar si está vacío?¿Cómo saber si un IEnumerable <ValueType> está vacío, sin contar todo?

Por ejemplo, en class elementos que normalmente pondría a prueba con primero o por defecto:

myEnumerableReferenceTypeElements.FirstOrDefault() == null 

porque nula no es normalmente un valor válido en colecciones siendo iterado.

Sin embargo, en el caso de los tipos de valores donde todos los valores deben estar en un rango predefinido, el valor predeterminado (por ejemplo, int por defecto de 0) también es un elemento viable en la colección.

myValueTypeInt32Elements.FirstOrDefault() == 0 // can't tell if empty for sure 
+2

Debe usar 'Any' independientemente del tipo subyacente. – jason

+0

posible duplicado de [C#: forma recomendada de comprobar si una secuencia está vacía] (http://stackoverflow.com/questions/2094729/c-recommended-way-to-check-if-a-sequence-is-empty) – nawfal

Respuesta

12

Trate de usar .Any()

bool isEmpty = !myEnumerable.Any(); 

De MSDN

determina si una secuencia contiene ningún elemento.

+0

Fuiste primero en el sorteo. Tan simple al final. Gracias. –

+0

@John K No hay problema, me alegro de que haya ayudado. –

1
bool isEmpty = !myEnumerableReferenceTypeElements.Any(); 
Cuestiones relacionadas