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

C# 如何在字符串数组上使用Sum-LINQ?,c#,arrays,linq,parsing,sum,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)); 但是它说不能Parsesourcetypeintto type 我不想使用foreach循环对这些数字求和。您错误调用了sum() Sum()获取将单个元素转换为数字的lambda: .Su

如何使用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
sourcetype
int
to type


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

您错误调用了
sum()

Sum()
获取将单个元素转换为数字的lambda:

.Sum(x => int.Parse(x))
或者,更简单地说

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

而不是

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


这将解析
myString.Split(',')的每个元素。
将它们添加到int中。

第一种形式适用于我:),但第二种形式没有真正得到错误(无法从方法组中选择方法您是否打算调用该方法):(我在第二个表单上也遇到了一个错误。System.Func和System之间存在歧义。Func@harry180:第二种形式需要C#4+@SLaks:4.0中到底做了哪些更改来实现这一点?为什么在以前的版本中不起作用?@OlivierJacot Descombes:
var value = "1,2,4,8,16".Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
                        .Select (str => int.Parse(str))
                        .Sum ( ) ;

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

Console.WriteLine( value ); // 31