首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

List<T> 重复记录合龙 数量相加

2012-08-27 
ListT 重复记录合并 数量相加实体类如下C# codepublic partial class ProductItem{/// summary/// 订

List<T> 重复记录合并 数量相加
实体类如下

C# code
public partial class ProductItem    {        /// <summary>        /// 订单编号        /// </summary>        public string orderId { get; set; }        /// <summary>        /// 条形码        /// </summary>        public string barCode { get; set; }        /// <summary>        /// 产品名称        /// </summary>        public string Title { get; set; }        /// <summary>        /// 单价        /// </summary>        public string Price { get; set; }        /// <summary>        /// 订货数量        /// </summary>        public string quantity { get; set; }        /// <summary>        /// 规格        /// </summary>        public string Spec { get; set; }        /// <summary>        /// 优惠价        /// </summary>        public double preferPrice { get; set; }        /// <summary>        /// 原价        /// </summary>        public double costPrice { get; set; }        /// <summary>        /// 审核备注        /// </summary>        public string auditMemo { get; set; }    }

需要在这里判断如果barCode 条形码相同的情况下合并为一个商品quantity 订货数量相加
C# code
List<Model.ProductItem> listProductItem = new List<Model.ProductItem>();List<Model.SellOrderCart> listOrderCart = SellOrderCart.GetModelList(OrderID);foreach (Model.SellOrderCart item in listOrderCart){                        Model.ProductItem modelProductItem = new Model.ProductItem();                        modelProductItem.orderId = item.OrderID.ToString();                        modelProductItem.barCode = SellOrder.GetSpec(item.Title, item.ItemCode, item.GoodsTypeID, item.GoodsID, item.Specs, "", item.YGD);                        modelProductItem.Title = SellOrder.GetTitle(item.Title, item.SetTableID);                        modelProductItem.Price = item.SalePrice.ToString();                        modelProductItem.quantity = item.Quantity.ToString();                        modelProductItem.Spec = modelProductItem.barCode;                        modelProductItem.preferPrice = Convert.ToDouble(item.SalePrice);                        modelProductItem.costPrice = Convert.ToDouble(item.SalePrice);                        modelProductItem.auditMemo = SellOrder.GetAuditMemo(item.UserRemark, item.YGD);                        //如何判断barCode 条形码相同的情况下合并为一个商品quantity 订货数量相加                        listProductItem.Add(modelProductItem);}


[解决办法]
代码仅供参考:

C# code
            Dictionary<string, Model.ProductItem> productDic = new Dictionary<string, Model.ProductItem>();            List<Model.SellOrderCart> listOrderCart = SellOrderCart.GetModelList(OrderID);            foreach (Model.SellOrderCart item in listOrderCart)            {                string barCode = SellOrder.GetSpec(item.Title, item.ItemCode, item.GoodsTypeID, item.GoodsID, item.Specs, "", item.YGD);                if (productDic.ContainsKey(barCode))                {                    productDic[barCode].quantity += item.Quantity.ToString();                }                else                {                    Model.ProductItem modelProductItem = new Model.ProductItem();                    modelProductItem.orderId = item.OrderID.ToString();                    modelProductItem.barCode = barCode;                    modelProductItem.Title = SellOrder.GetTitle(item.Title, item.SetTableID);                    modelProductItem.Price = item.SalePrice.ToString();                    modelProductItem.quantity = item.Quantity.ToString();                    modelProductItem.Spec = modelProductItem.barCode;                    modelProductItem.preferPrice = Convert.ToDouble(item.SalePrice);                    modelProductItem.costPrice = Convert.ToDouble(item.SalePrice);                    modelProductItem.auditMemo = SellOrder.GetAuditMemo(item.UserRemark, item.YGD);                    productDic.Add(barCode, modelProductItem);                }            } 


[解决办法]

探讨
实体类如下
C# code

public partial class ProductItem
{
/// <summary>
/// 订单编号
/// </summary>
public string orderId { get; set; }
/// <summary>
/// 条形码
……

[解决办法]

List<ProductItem> p = new List<ProductItem>();
p.Add(new ProductItem() { orderId = "1", barCode = "1", quantity = "2" });
p.Add(new ProductItem() { orderId = "2", barCode = "1", quantity = "3" });
p.Add(new ProductItem() { orderId = "3", barCode = "3", quantity = "2" });
p.Add(new ProductItem() { orderId = "4", barCode = "4", quantity = "3" });
var query = from t in p
group t by t.barCode into g
select g.Take(1).Select(c => new ProductItem()
{
orderId = c.orderId,
barCode = c.barCode,
Spec = c.Spec,
Title = c.Title,
auditMemo = c.auditMemo,
costPrice = c.costPrice,
preferPrice = c.preferPrice,
Price = c.Price,
quantity = p.Where(d => d.barCode == c.barCode).Select(ee => int.Parse(ee.quantity)).Sum().ToString()
});
List<ProductItem> reval = new List<ProductItem>();
foreach (var r in query) 
{
reval.Add(r.First());
}
[解决办法]
C# code
 var vardt = from p in modelProductItem group p by new {p.orderId ,p.barCode} into g let sum = g.Sum(x => int.Parse(x.quantity)) select new { orderId= g.Key,//这里只写了两个字段,其他字段自己加上就行了 Sum = sum }; 

热点排行