2011-11-26 92 views
19

List<int> var ve kaç değerin (değer < 5) sahip olduğunu saymak gerekiyor - bunu nasıl yaparım? Böyleİçindeki eleman sayısı <5 in <a1 <0</ a1><T>

+0

yeesh! Birisi aşağıda 4 cevap aşağı çekerek bir grup zaman geçirdi. –

+0

@ p.campbell - Evet, kimi “Nereden” yabancıya suçlandıysa. – Oded

+4

olası bir kopyası [Linq kullanarak bir listenin öğe sayısını <> seçin] (http://stackoverflow.com/questions/3853010/get-item-count-of-a-list-using-linq) –

cevap

55

Count()Predicate<T> kabul bir aşırı vardır:

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

Bkz MSDN

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

şey:

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

bu deneyin:

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

kısa seçenek:

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

Bu aynı zamanda yapardı:

0 Diğer cevaplar aksine
+0

+1 Ben aslında Buradaki son yöntemden çok hoşlanıyorlar, çünkü onlar oldukça iyi bir performans sergiliyorlar ve bence burada neler olup bittiği biraz daha net. – ForbesLindesay

35

, bu bu aşırı kullanarak tek yöntem çağrısında yapar countextension method:

using System.Linq; 

... 

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

linq uzantısı yöntemleri System.Linq ad alanında tanımlı olduğu bir kullanarak ifadeyi eklemeniz gerekebilir Not olduğunu ve zaten yok ise System.Core referansı (olmalıdır).


Ayrıca bakınız: Extension methods defined by the Enumerable class.

+1

+1 yalnızca yan tümcesiz bir yan tümcesiz. –

+2

+1, çünkü abatischchev'nin kabul edilen yanıtından bir dakika önceydi;) – Abel

+0

@Daniel: Sadece bir, evet :)) – abatishchev

5

deneyin -

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 LINQ kullanmayan tek cevap olarak. Her ne kadar "for" yerine "foreach" kullanmayı tercih etsem de. Daha da iyisi, parametre olarak bir yüklemeye sahip olan ve daha sonra lambda notasyonu kullanılarak çağrılan genelleştirilmiş bir yöntem olacaktır. – RenniePet