2008-10-31 24 views
12

LINQ öğreniyorum ve teknolojiyi daha iyi anlamama yardımcı olacağını düşündüğüm çok basit bir soru var. Bir dizi dizinin ürününü nasıl bulabilirim? Bu çalışacakÜrünü LINQ ile hesaplayın

int[] vals = { 1, 3, 5 }; 
return vals[0] * vals[1] * vals[2]; 

cevap

28

:

var product = vals.Aggregate(1, (acc, val) => acc * val); 

Sen 1 bir tohum ile başlıyoruz ve ardından işlev her biri için çağrılır

Örneğin

yapmak LINQ yolu nedir Değerlerinizin iki bağımsız değişkenle, mevcut birikmiş değer olan acc ve dizideki değer olan val; işlev, mevcut birikmiş değeri dizi içindeki değere çarpar ve bu ifadenin sonucu bir sonraki işleve acc olarak iletilir. Yani sağladığınız dizi ile fonksiyon çağrıları zinciri:

(1, 1) => 1 
(1, 3) => 3 
(3, 5) => 15 
+0

+1. var yerine int kullanmasını öneririz. –

+2

Var'ın kullanımı bir kişisel/takım kararıdır. Şahsen ben tip bilgisinin muazzam derecede faydalı olduğunu düşünmüyorum ve sizi kodun * amacından * uzaklaştırıyorum. Bu konuda şunları yazdım: http://gregbeech.com/blogs/tech/archive/2008/03/24/to-var-or-not-to-var-implicit-typing-is-the-question.aspx –

+0

Yani Agrega bu şekilde çalışır. Bu inanılmaz derecede yararlı görünüyor, daha önce bunu nasıl yapacağımı öğrenmediğime inanamıyorum. –