将字符串解析为十进制并在sql查询中求和

时间:2016-05-17 07:27:36

标签: c# asp.net type-conversion

我一直试图从数据库查询中添加两个值(即字符串)。我试图解析它们并将它们添加到数据库查询中,但我不能。

数据库值:

Amount1:       -400 (string)
Amount2:        400 (string)

我需要(-400)+(400)0

我的代码如下:

var Result = Model.Fin.Where(*some conditions*).Sum(a => decimal.TryParse(a.Amount));

你能帮忙吗。

2 个答案:

答案 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() 获取数据并对其进行总结客户端