lamda表达式写GroupBy分组查询

    public List<GoodsConsumerRankModel> GetGoodsConsumerRankingsModelList(DateTime start, DateTime end)
        {
            List<GoodsConsumerRankModel> list = new List<GoodsConsumerRankModel>();
            GoodsConsumerRankModel goodsConsumerRankModel = null;
            using (tzx_vip_proEntitiesConn db = new tzx_vip_proEntitiesConn())
            {
                var goodsConsumptionModelList = db.bill_order_item
                    .Where(q => 
                        q.t_create_time > start && 
                        q.t_create_time < end &&
                        q.i_goods_type ==1)
                    .GroupBy(q => new
                    {
                        q.i_goods_pk,
                        q.v_goods_no,
                        q.v_goods_name,
                        q.i_type_pk,
                        q.v_type_name,
                        q.f_price
                    })
                    .Select(q => new
                    {
                        q.Key.i_goods_pk,
                        q.Key.v_goods_no,
                        q.Key.v_goods_name,
                        q.Key.i_type_pk,
                        q.Key.v_type_name,
                        q.Key.f_price,
                        GoodsConsumerAmount = q.Sum(i => i.f_amount.Value),
                        GoodsConsumerMoney = q.Sum(i => i.f_total_money.Value),
                    }
                    )
                    .ToList();
                foreach (var item in goodsConsumptionModelList)
                {
                    goodsConsumerRankModel = new GoodsConsumerRankModel();
                    if (item.i_goods_pk != null)
                    {
                        goodsConsumerRankModel.GoodsPk = item.i_goods_pk.Value;
                    }
                    goodsConsumerRankModel.GoodsNo = item.v_goods_no;
                    goodsConsumerRankModel.GoodsName = item.v_goods_name;
                    if (item.i_type_pk != null)
                    {
                        goodsConsumerRankModel.GoodsTypePk = item.i_type_pk.Value;
                    }
                    goodsConsumerRankModel.GoodsTypeName = item.v_type_name;
                    goodsConsumerRankModel.GoodsPrice = item.f_price!=null ? item.f_price.Value:0;
                    goodsConsumerRankModel.GoodsConsumerAmount = item.GoodsConsumerAmount;
                    goodsConsumerRankModel.GoodsConsumerMoney = item.GoodsConsumerMoney;
                    list.Add(goodsConsumerRankModel);
                }
            }
            return list;
        }
  public class GoodsConsumerRankModel
    {
        public int GoodsPk { get; set; }        // 商品pk
        public string GoodsNo { get; set; }        // 商品编号
        public string GoodsName { get; set; }      //  商品名
        public int GoodsTypePk { get; set; }    //  商品类型pk
        public string GoodsTypeName { get; set; }  //  商品类型名
        public double GoodsPrice { get; set; }     //   商品价格

        public double GoodsConsumerAmount { get; set; }  //  商品消费数量
        public double GoodsConsumerMoney { get; set; }   //  商品消费金额

    }
posted @ 2019-10-13 20:17  龙猫•ᴥ•  阅读(15)  评论(0)    收藏  举报  来源