2011-11-26 21 views
19

में int <5 के साथ तत्वों की गणना करें मेरे पास List<int> है और इसकी गणना करने की आवश्यकता है (मूल्य < 5) के साथ कितने तत्व हैं - मैं यह कैसे कर सकता हूं?सूची <T>

+0

Yeesh! किसी ने नीचे 4 उत्तरों नीचे दिए गए समय का एक गुच्छा बिताया। –

+0

@ p.campbell - हाँ, जिसे इसे अपर्याप्त 'कहां 'पर अपराध किया गया था। – Oded

+4

संभावित डुप्लिकेट [सूची का आइटम गिनती प्राप्त करें <> लिंक का उपयोग करके]> (http://stackoverflow.com/questions/3853010/get-item-count-of-a-list-using-linq) –

उत्तर

55

Count() एक अधिभार Predicate<T> को स्वीकार किया है:

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

देखें MSDN

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

कुछ इस तरह:

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

इस प्रयास करें:

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

कम से कम विकल्प:

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

यह भी करना होगा:

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

+1 मैं वास्तव में वास्तव में बाद की विधि को वास्तव में पसंद करते हैं क्योंकि वे काफी समान प्रदर्शन के अनुसार हैं और मुझे लगता है कि यह थोड़ा स्पष्ट है कि यहां क्या हो रहा है। – ForbesLindesay

35

अन्य उत्तर के विपरीत, इस के इस अधिभार का उपयोग कर एक विधि कॉल में यह होता है countextension method:

using System.Linq; 

... 

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

के बाद से LINQ विस्तार तरीकों System.Linq नाम स्थान में परिभाषित कर रहे हैं आप एक बयान का उपयोग कर जोड़ने के लिए आवश्यकता हो सकती है ध्यान दें कि , और System.Core के संदर्भ में यदि यह पहले से मौजूद नहीं है (यह होना चाहिए)।


यह भी देखें: Extension methods defined by the Enumerable class.

+1

केवल खंड के बिना केवल एक को रोकता है जहां खंड। –

+2

+1 क्योंकि आप abatischchev के स्वीकृत उत्तर से एक मिनट पहले थे;) – Abel

+0

@ डैनियल: केवल एक, हाँ :)) – abatishchev

5

प्रयास करें -

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); 
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 का उपयोग नहीं करता है। हालांकि मैं "के लिए" के बजाय "foreach" का उपयोग करना पसंद करता। यहां तक ​​कि बेहतर एक सामान्यीकृत विधि होगी जो पैरामीटर के रूप में भविष्यवाणी करेगी और फिर लैम्ब्डा नोटेशन का उपयोग करके बुलाया जा सकता है। – RenniePet

संबंधित मुद्दे