2009-09-18 22 views
6

मैं यह पता लगाने की कोशिश कर रहा हूं कि अधिकतम मान सरणी के भीतर एक अनुमान के साथ लिंक के .Count() का उपयोग कर सरणी के भीतर होता है। हालांकि, मैं पूरी तरह से समझ नहीं पा रहा हूं कि इसे कैसे किया जाए। एमएसडीएन के संक्षिप्त उदाहरण को पढ़ने से मैंने सोचा कि मैं समझ गया, लेकिन स्पष्ट रूप से नहीं!एक समारोह के साथ सी # गणना() का उपयोग

string[] test = { "1", "2", "3", "4", "4" }; 
string max = test.Max(); 
Label1.Text = test.Count(p => p == max); 

लेकिन वह काम नहीं किया:

यह मैं क्या के बारे में सोचा है। तो मैंने अधिकतम को एक पूर्णांक में बदलने की कोशिश की कि यह काम करेगा या नहीं, लेकिन यह काम नहीं करता है।

+0

"काम नहीं करता" से आपका क्या मतलब है? यह क्या करता है, और यह आपकी अपेक्षा से अलग कैसे होता है? क्या तुम्हें कोई त्रुटि का संदेश मिला है? – Guffa

+0

बहुत आसान, चीयर्स दोस्तों! – Psytronic

उत्तर

7

आप पहली बार फिल्टर करने के लिए कहाँ समारोह इस्तेमाल कर सकते हैं तो गिनती:

Label1.Text = test.Where(t => t == test.Max()).Count().ToString(); 
+2

अंत में एक ToString() जोड़ें .... – BFree

+0

@BFree: अच्छा बिंदु! – JDunkerley

+6

आपको ** पहले 'कहां' के साथ फ़िल्टरिंग की आवश्यकता नहीं है। 'गणना' में एक अधिभार है जो 'Func ' अनुमानित करता है और केवल मिलान करने वाली वस्तुओं की गणना करता है। –

0

की तरह कुछ की कोशिश करो। स्ट्रिंग के लिए आपको केवल वापसी मान (जो एक पूर्णांक है) को परिवर्तित करने की आवश्यकता है।

Label1.Text = test.Count(p => p == max).ToString(); 
16

का उपयोग Count(predicate) ठीक है:

Label1.Text = test.Where(p => p == max).Count().ToString(); 
2
 int[] test = { 2, 45, 3, 23, 23, 4, 2, 1, 1, 1, 1, 23, 45, 45, 45 }; 
     int count = test.Count(i => i == test.Max()); 

अब आप गिनती जो अपने अंतिम गिनती है। एक int संग्रह के साथ और अधिक समझ में आता है। अब इसे प्रदर्शित करने के लिए, आप गिनती पर ToString() को कॉल कर सकते हैं।