2011-11-26 7 views
19

Tengo un List<int> y necesito contar cuántos elementos tiene (valor < 5) - ¿cómo puedo hacer esto?Elementos de conteo con int <5 en la lista <T>

+0

Yeesh! Alguien gastó un montón de tiempo downvoting 4 respuestas a continuación. –

+0

@ p.campbell - Sí, quienquiera que fuera se ofendió por el extraño 'Dónde '. – Oded

+4

posible duplicado de [Obtener el recuento de elementos de una lista <> utilizando Linq] (http://stackoverflow.com/questions/3853010/get-item-count-of-a-list-using-linq) –

Respuesta

55

Count() tiene una sobrecarga aceptar Predicate<T>:

int count = list.Count(x => x < 5); 

Ver MSDN

5
List<int> list = ... 
int count = list.Where(x => x < 5).Count(); 
3

Algo como esto:

var count = myList.Where(x => x < 5).Count(); 
1

Prueba esto:

int c = myList.Where(x=>x<5).Count(); 
16

La opción más corta:

myList.Count(v => v < 5); 

Esta sería también hacer:

myList.Where(v => v < 5).Count(); 
+0

+1 En realidad realmente me gusta el método posterior, ya que son bastante equivalentes en cuanto al rendimiento y creo que es un poco más claro lo que está sucediendo aquí. – ForbesLindesay

35

A diferencia de otras respuestas, esto hace que en una llamada al método usando esta sobrecarga de la countextension method:

using System.Linq; 

... 

var count = list.Count(x => x < 5); 

Tenga en cuenta que dado que los métodos de extensión LINQ se definen en el System.Linq espacio de nombres puede que tenga que añadir una declaración utilizando y referencia al System.Core si aún no está allí (debería ser).


Ver también: Extension methods defined by the Enumerable class.

+1

+1 solo uno sin la cláusula where externa. –

+2

+1 porque fue un minuto antes que la respuesta aceptada de abatischchev;) – Abel

+0

@Daniel: Solo uno, sí :)) – abatishchev

5

Try -

var test = new List<int>(); 
test.Add(1); 
test.Add(6); 
var result = test.Count(i => i < 5); 
7
int count = list.Count(i => i < 5); 
3
list.Where(x => x < 5).Count() 
2
int c = 0; 
for (i = 0; i > list.Count; i++) 
{ 
    // The "for" is check all elements that in list. 
    if (list[i] < 5) 
    { 
     c = c + 1; // If the element is smaller than 5 
    } 
} 
+0

+1 Por ser la única respuesta que no utiliza LINQ. Aunque hubiera preferido el uso de "foreach" en lugar de "para". Incluso mejor sería un método generalizado que tiene un predicado como parámetro y luego puede invocarse utilizando la notación lambda. – RenniePet

Cuestiones relacionadas