2016-04-07 96 views
0

这里是我的代码:如何在查询中获得小数点的运行总数?

decimal orderTot; 
var orderTotalQry = from ot in conn.Table<orderDetails>() 
           where ot.ORDERNUMBER == orderDetailOrderNumber 
           select ot; 

      foreach (orderDetails OD in orderTotalQry) 
      { 
       orderTot =+ Convert.ToDecimal(OD.ITEMCOST); 

      }; 

我试图得到查询结果的orderTot总和。

回答

0

首先,它应该是:

orderTot += Convert.ToDecimal(OD.ITEMCOST); 

,而不是

orderTot =+ Convert.ToDecimal(OD.ITEMCOST); //notice the `+` after `=` 

否则,你也可以使用LINQ点心,如:

var sum = orderTotalQry.Sum(r=> r.ITEMCOST); 

如果ITEMCOST不是decimal类型,那么你可以明确地转换它。

0

使用LINQ Sum方法。

var sum= orderTotalQry.Sum(f => Convert.ToDecimal(f)); 

orderTotalQry假设项目为非数值类型(例如:字符串)

如果orderTotalQry项目的类型decimal/int的,你不需要Convert.ToDecimal电话。

var sum= orderTotalQry.Sum(); 

或者您可以使用Sum方法在原来的声明

var total= (from ot in conn.Table<orderDetails>() 
           where ot.ORDERNUMBER == orderDetailOrderNumber 
           select ot).Sum(); 
+0

我收到以下错误: 在mscorlib.ni.dll中发生类型'System.InvalidCastException'的异常,但未在用户代码中处理 A附加信息:无法投射“HDW_Order.Models.orderDetails”类型的对象来键入“System.IConvertible”。 – RdDragon

+0

mscorlib.ni.dll中发生类型为“System.InvalidCastException”的异常,但未在用户代码中处理其他信息:无法投射类型为'HDW_Order.Models.orderDetails'的对象以键入'System.IConvertible'。 – RdDragon

+0

'conn.Table ()'返回什么? – Shyju

0

使用LINQ方法,你可以写你的查询是这样的:

var orderTot = conn.Table<orderDetails>() 
        .Where(o => o.ORDERNUMBER == orderDetailOrderNumber) 
        .Sum(o => o.ITEMCOST);