2010-09-14 12 views
19

में मानों मैं निम्नलिखित कोड है और मैं बाहर काम करने के मेरे IEnumerable में सभी मान गुणा करने के लिए कैसे कोशिश कर रहा हूँ।Muliplying सभी IEnumerable <int>

मैंने सोचा था कि वहाँ एक गुणा विधि से हो सकता है की तरह वहाँ योग के साथ है। मुझे लगता है कि मैं प्रत्येक आइटम पर एक foreach कर सकता था लेकिन इन दिनों यह थकाऊ लगता है।

कोई सुझाव?

//1:2:6 
string[] pkgratio = comboBox1.SelectedRow.Cells["PkgRatio"].Value.ToString().Split(':'); 
var ints = pkgratio.Select(x => int.Parse(x));   

int modvalue = ints.... 

उत्तर

31

आप के लिए क्या देख रहे हैं सकल समारोह

int modValue = ints.Aggregate(1, (x,y) => x * y); 

सकल समारोह एक प्रारंभिक संचायक मूल्य में ले जाता है और उसके बाद गणन एक नया संचायक मूल्य बनाने में हर मूल्य के लिए एक ऑपरेशन लागू होता है। यहां हम 1 से शुरू करते हैं और फिर संचयक के वर्तमान मूल्य से कभी भी मूल्य को गुणा करते हैं।

नोट: एक खाली ints मूल्य के मामले में यह 1. इस मई वापस आ जाएगी या अपनी स्थिति के लिए सही नहीं हो सकता।

+0

धन्यवाद। मैं सिर्फ ints.Aggregate (1, (एक्स, वाई) => x + y) की कोशिश की, और 1,2,6 के लिए यह 10 तक जोड़ता है। मुझे लगता है कि ऐसा इसलिए है क्योंकि यह शुरू करने के लिए 1 जोड़ता है। गुणा करना ठीक रहेगा ?? – Jon

+0

@ जोन: हाँ। तुम भी पूरी तरह बीज को छोड़ देते हैं और 'ints.Aggregate ((एक्स, वाई) => x * वाई)' है, लेकिन अगर आप इसे एक खाली अनुक्रम फ़ीड कि एक अपवाद फेंक कर सकते हैं। – LukeH

+0

मैंने अभी कोशिश की है और यह एक अपवाद फेंकता है भले ही बीज खाली अनुक्रम पर है – Jon

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