【发布时间】:2014-05-27 14:17:51
【问题描述】:
我有一个函数可以根据订单 ID 从 SQL 表中获取用户订单的每个商品的数量和重量:
protected decimal getOrderWeight(int orderid)
{
string sqlCmd = "SELECT Weight, Quantity FROM OrderItems WHERE OrderId = @OrderId";
int qty = 0;
decimal wgt = 0;
decimal totalWeight = 0;
using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["AbleCommerce"].ToString()))
{
cn.Open();
SqlCommand cmd = new SqlCommand(sqlCmd, cn);
cmd.Parameters.AddWithValue("@OrderId", orderid);
using (IDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
qty = Convert.ToInt32(reader["Quantity"]);
wgt = Convert.ToDecimal(reader["Weight"]);
totalWeight = qty * wgt;
}
cn.Close();
}
}
return totalWeight;
}
在表(称为 OrderItems)中,每个项目都有一个数量和一个重量。但是,表中显示的重量不是重量 * 数量的结果(即,对于订单 #12345,ABC 项目的数量为 6,每个 ABC 项目重 1.00 磅)。我创建的函数的工作原理是将每个订单商品的数量乘以重量(即所有 6 件 ABC 商品的总重量为 6.00 磅)
但是,我现在需要将这些总重量值相加,以获得整个订单的总重量。现在,我按顺序返回所有重量: 6.00, 5.00, 2.80, 146.76, 6.02, 2.25
但我不确定如何将所有这些加在一起?我正在考虑做一个 Split() 但后来我会将小数转换为字符串,只是为了将它们转换回小数,以便在“拆分”后将它们加在一起。这似乎非常复杂......有没有更好的方法?
【问题讨论】:
-
如果您只是将计算行更改为
totalWeight += qty * wgt;,您的代码会不会这样做?
标签: c# sql sql-server add