linq嵌套查询

#region 定义类型 /// <summary> /// 商品信息 /// </summary> public class Goods { /// <summary> /// 商品编号 /// </summary> public string GsNo { get; set; } /// <summary> /// 商品名称 /// </summary> public string GsName { get; set; } /// <summary> /// 商品单价 /// </summary> public double GsPrice { get; set; } } /// <summary> /// 销售单信息 /// </summary> public class SalesOrder { /// <summary> /// 单据ID /// </summary> public int OrderID { get; set; } /// <summary> /// 商品编号 /// </summary> public string GoodsNo { get; set; } /// <summary> /// 销售时间 /// </summary> public DateTime Time { get; set; } /// <summary> /// 销售数量 /// </summary> public int Qty { get; set; } } #endregion class Program { static void Main(string[] args) { // 商品信息 - 示例数据 Goods[] goodsArr = { new Goods { GsNo = "G-1", GsName = "报纸", GsPrice = 1.50d }, new Goods { GsNo = "G-2", GsName = "食盐", GsPrice = 3.65d }, new Goods { GsNo = "G-3", GsName = "火柴", GsPrice = 0.50d }, new Goods { GsNo = "G-4", GsName = "灯泡", GsPrice = 12.30d }, new Goods { GsNo = "G-5", GsName = "剪刀", GsPrice = 4.50d } }; // 销售单据 - 示例数据 SalesOrder[] orders = { new SalesOrder { OrderID = 1, GoodsNo = goodsArr[0].GsNo, Qty = 3, Time = new DateTime(2014, 1, 2) }, new SalesOrder { OrderID = 2, GoodsNo = goodsArr[1].GsNo, Qty = 5, Time = new DateTime(2014, 1, 4) }, new SalesOrder { OrderID = 3, GoodsNo = goodsArr[2].GsNo, Qty = 2, Time = new DateTime(2014, 1, 12) }, new SalesOrder { OrderID = 4, GoodsNo = goodsArr[3].GsNo, Qty = 6, Time = new DateTime(2014, 1, 20) }, new SalesOrder { OrderID = 5, GoodsNo = goodsArr[4].GsNo, Qty = 1, Time = new DateTime(2014, 2, 3) }, new SalesOrder { OrderID = 6, GoodsNo = goodsArr[2].GsNo, Qty = 4, Time = new DateTime(2014, 2, 9) }, new SalesOrder { OrderID = 7, GoodsNo = goodsArr[1].GsNo, Qty = 8, Time = new DateTime(2014, 3, 13) }, new SalesOrder { OrderID = 8, GoodsNo = goodsArr[3].GsNo, Qty = 10, Time = new DateTime(2014, 3, 11) }, new SalesOrder { OrderID = 9, GoodsNo = goodsArr[0].GsNo, Qty = 15, Time = new DateTime(2014, 3, 18) }, new SalesOrder { OrderID = 10, GoodsNo = goodsArr[0].GsNo, Qty = 7, Time = new DateTime(2014, 2, 22) }, new SalesOrder { OrderID = 11, GoodsNo = goodsArr[3].GsNo, Qty = 20, Time = new DateTime(2014, 3, 17) }, new SalesOrder { OrderID = 12, GoodsNo = goodsArr[1].GsNo, Qty = 13, Time = new DateTime(2014, 1, 29) }, new SalesOrder { OrderID = 13, GoodsNo = goodsArr[2].GsNo, Qty = 8, Time = new DateTime(2014, 2, 9) }, new SalesOrder { OrderID = 14, GoodsNo = goodsArr[4].GsNo, Qty = 21, Time = new DateTime(2014, 3, 16) }, new SalesOrder { OrderID = 15, GoodsNo = goodsArr[2].GsNo, Qty = 6, Time = new DateTime(2014, 2, 15) } }; /* * 查询并计算出各个商品的 * 总销售额 */ var res = from g in goodsArr let totalQty = /* 以下为嵌套查询 */ (from od in orders where od.GoodsNo == g.GsNo select od).Sum(odr => odr.Qty) select new { g.GsNo, g.GsName, /* 计算总销售额 */ Total = totalQty * g.GsPrice }; // 输出查询结果 foreach (var item in res) { Console.WriteLine("编号:{0},商品:{1},总额:{2:C2}", item.GsNo, item.GsName, item.Total); } Console.Read(); } }

转载于:https://www.cnblogs.com/xuyuchen/p/8282998.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值