如何在字符串数组上使用Sum - LINQ?

时间:2013-01-10 17:31:47

标签: c# arrays linq parsing sum

如何使用LINQ Sum方法对字符串数组求和?

我的字符串看起来像是:"1,2,4,8,16"

我试过了:

string myString = "1,2,4,8,16";
int number = myString.Split(',').Sum((x,y)=> y += int.Parse(x));

但它表示无法Parse来源类型int输入?。

我不想使用foreach循环对这些数字求和。

3 个答案:

答案 0 :(得分:21)

你误打Sum()

Sum()使用lambda将单个元素转换为数字:

.Sum(x => int.Parse(x))

或者更简单地说,

.Sum(int.Parse)

这仅适用于C#编译器的版本4或更高版本(无论平台版本如何)

答案 1 :(得分:4)

而不是

int number = myString.Split(',').Sum((x,y)=> y += int.Parse(x));

使用

int number = myString.Split(',').Sum(x => int.Parse(x));

myString.Split(',')的每个元素解析为整数并添加它们。

答案 2 :(得分:0)

var value = "1,2,4,8,16".Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
                        .Select (str => int.Parse(str))
                        .Sum ( ) ;

Console.WriteLine( value ); // 31