我一直试图从数据库查询中添加两个值(即字符串)。我试图解析它们并将它们添加到数据库查询中,但我不能。
数据库值:
Amount1: -400 (string)
Amount2: 400 (string)
我需要(-400)+(400)
为0
。
我的代码如下:
var Result = Model.Fin.Where(*some conditions*).Sum(a => decimal.TryParse(a.Amount));
你能帮忙吗。
答案 0 :(得分:0)
TryParse
需要out
参数以及要解析的值,其返回值为bool
而不是小数。
所以你应该使用的有效语法是
var models = Model.Fin.Where(some conditions).ToList();
var Result = models.Sum(a => decimal.Parse(a.Amount))
答案 1 :(得分:0)
如果是TryParse
,您必须将更长的和效率低下的代码:
var Result = Model.Fin
.Where(*some conditions*)
.AsEnumerable() // you'll need this as well (Linq to Sql doesn't support the next sum)
.Sum(a => {
decimal v;
if (!decimal.TryParse(a.Amount, out v))
return 0.0M; // a.Amount can't be decimal, say, "bla-bla-bla"
return v;
}
由于Linq to Sql无法使用decimal.TryParse
创建查询,因此您必须切换到Linq to Objects
- AsEnumerable()
获取数据并对其进行总结客户端。