2010-09-14 35 views
19

'daki tüm değerleri metellemek Aşağıdaki kodu kullanıyorum ve IEnumerable'ımdaki tüm değerlerin nasıl çoğaltılacağına çalışıyorum.IEnumerable <int>

Sum'la olduğu gibi Çarpma yönteminin olabileceğini düşündüm. Her bir öğe için bir foreach yapabilirim sanırım ama bu günlerde bu sıkıcı görünüyor.

Herhangi bir öneriniz var mı? Aradığınız Ne

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

int modvalue = ints.... 

cevap

31

Toplama işlevi bir başlangıç ​​akümülatör değeri alır Toplama işlevi

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

ve ardından yeni bir akümülatör değer yaratmak numaralandırma her değere bir operasyon geçerlidir. Burada 1 ile başlıyoruz ve daha sonra hiç bir zaman akümülatörün mevcut değerine göre çarpıyoruz.

Not: Boş bir ints değeri söz konusu olduğunda bu 1 değerini döndürecektir. Durumunuz için bu doğru olabilir veya olmayabilir.

+0

Teşekkürler. Sadece denedim. Agrega (1, (x, y) => x + y); ve 1,2,6 için 10'a kadar ekleyin. Sanırım başlangıçta 1 tane eklediği için. Çarpma ancak tamam olacak mı ?? – Jon

+0

@ Japon: Evet. Ayrıca tohumu tamamen boşaltabilir ve 'ints.Aggregate ((x, y) => x * y)' yi de yapabilirsiniz, ancak boş bir diziyi beslerseniz bu durum bir istisna atar. – LukeH

+0

Ben sadece denedim ve bir boş sıra dizisinde olsa bile bir istisna atar – Jon

İlgili konular