我的专栏requestAmount
是nvarchar(100)
。
我需要计算总和:
int? sum = q.Sum(g => g.requestAmount);
我收到了这个错误:
错误26无法将lambda表达式转换为委托类型 '
System.Func<samtaApplication.DbLayer.tblMaterial,int>
'因为有些人 块中的返回类型不能隐式转换为 委托返回类型
如何将字符串转换为int?
答案 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?