2012-09-11 52 views
0

我需要在linq.Below中添加項目的arraylist。這是我的示例代碼。在Linq中添加arraylist的字符串

string[] _str = ("1.21,2.02,3.14,4.951,5.156").ToString().Split(','); 
double Sum = 0.0; 
for (int i = 0; i < _str.Length; i++) 
{ 
    if (_str[i].ToString() != ",") 
    Sum = Sum + Convert.ToDouble(_str[i]); 
} 

上面的代碼我在for循環中獲取數組列表中所有項的總和。我需要在linq中轉換相同的操作。任何人都可以幫我解決這個問題,因爲我是linq的新手。

在此先感謝。

+1

爲什麼你需要在LINQ中做到這一點? – svick

+2

第一行如此冗餘。 –

回答

1
string[] _str = {"1.21","2.02","3.14","4.951","5.156"}; 
double Sum = 0.0; 
for (int i = 0; i < _str.Length; i++) 
{ 
    double.TryParse(_str[i],out val) 
} 

但是,如果你學習LINQ

string[] _str = {"1.21","2.02","3.14","4.951","5.156"}; 
_str.Sum(x => 
    { 
     double val ; 
     if(double.TryParse(x, out val)){ 
     return val; 
     } 
     return 0.0; 
    }); 

的緣故。如果您是確保該字符串將始終包含有效的數字串這樣做。然後你可以使用double.Parse(x)。

3

使用Sum方法:

string[] _str = "1.21,2.02,3.14,4.951,5.156".Split(','); 
var result = _str.Sum(e => Double.Parse(e)); 
+0

感謝您的回覆,假設來自DB的值是這樣的1.21,2.02,3.14,4.951,5.156,。是否有任何代碼更改會發生。 – Arun

+0

@ Neon對不起,我不瞭解你。 – sloth

0

您可以嘗試

string[] _str = "1.21,2.02,3.14,4.951,5.156".Split(','); 
double Sum = _str.Sum(x=>Convert.ToDouble(x)); 
0

嘗試...

var _str = _str = ("1.21,2.02,3.14,4.951,5.156").ToString().Split(','); 
var _sum = Array.ConvertAll<String, Double>(_str, Double.Parse).Sum(); 

另一條眼線,用方法鏈接例如...

var _sum = "1.21,2.02,3.14,4.951,5.156".Split(',').Sum(x => Double.Parse(x));