在linq中将字符串转换为int以求和

时间:2013-12-04 12:30:02

标签: c# linq

我的专栏requestAmountnvarchar(100)

我需要计算总和:

int? sum = q.Sum(g => g.requestAmount);

我收到了这个错误:

  

错误26无法将lambda表达式转换为委托类型   'System.Func<samtaApplication.DbLayer.tblMaterial,int>'因为有些人   块中的返回类型不能隐式转换为   委托返回类型

如何将字符串转换为int?

4 个答案:

答案 0 :(得分:5)

linq to entities 中,您始终可以首先实现查询,因此您将对linq操作对象

int? sum = q.AsEnumerable().Sum(g => Int.Parse(g.requestAmount));

请注意,它将从db

加载整个q

编辑:

如果requestAmount可以为空,请使用:

int? sum = q.AsEnumerable().Sum(g => Convert.ToInt32(g.requestAmount));
将null作为参数

传递时,

Convert.ToInt32将返回0

答案 1 :(得分:2)

string可以为null或为空,因此,使用带有Where的过滤器并在应用Sum后为样本保持安全:

int dummy;
int result = q.Where(g => int.TryParse(g.TryParse(g.requestAmount, out dummy))
              .Sum(g => int.Parse(g.requestAmount.Trim()));

答案 2 :(得分:1)

int? sum = q.Sum(g => Int32.Parse(g.requestAmount));

答案 3 :(得分:0)

您是否尝试过使用int.TryParse?