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 @   一纸年华  阅读(11)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示