个人经历
之前遇到这个问题,没有解决,换了其他方式实现了我想要的功能,
今天又遇到这个问题,同样的调用方式,有的可以,有的不可以,于是仔细比对了代码
发现:
ShippingList objShippingList =new ShippingList();
while (objReader.Read())
{
objShippingList =new ShippingList()
{
ShippingDate = objReader["ShippingDate"].ToString(),
ShippingStatus = objReader["ShippingStatus"].ToString(),
Quantity = Convert.ToInt32(objReader["Quantity"]),
ProductName = objReader["ProductName"].ToString(),
SalesTime = objReader["SalesTime"].ToString(),
ServiceTime = objReader["ServiceTime"].ToString(),
SubTotalMoney = Convert.ToDecimal(objReader["SubTotalMoney"]),
UnitPrice = Convert.ToDecimal(objReader["UnitPrice"]),
Product = objReader["Product"].ToString(),
SalesListDetailId= objReader["SalesListDetailId"].ToString(),
Discount = Convert.ToInt32(objReader["Discount"])
};
}
objReader.Close();
return objShippingList ;
而正确的解决方案是:
List<ShippingList> objlist=new List<ShippingList>();
while (objReader.Read())
{
objlist.Add( new ShippingList()
{
ShippingDate = objReader["ShippingDate"].ToString(),
ShippingStatus = objReader["ShippingStatus"].ToString(),
Quantity = Convert.ToInt32(objReader["Quantity"]),
ProductName = objReader["ProductName"].ToString(),
SalesTime = objReader["SalesTime"].ToString(),
ServiceTime = objReader["ServiceTime"].ToString(),
SubTotalMoney = Convert.ToDecimal(objReader["SubTotalMoney"]),
UnitPrice = Convert.ToDecimal(objReader["UnitPrice"]),
Product = objReader["Product"].ToString(),
SalesListDetailId= objReader["SalesListDetailId"].ToString(),
Discount = Convert.ToInt32(objReader["Discount"])
});
}
objReader.Close();
return objlist;
封装在列表集合就可以了,不能封装成object 对象集合