读书人

Linq统计订单语句解决方案

发布时间: 2013-01-27 13:56:17 作者: rapoo

Linq统计订单语句
数据表
Order
ID SalesID PName QUANTITY AMOUNT CREATEDATE
1 1 P1 5 50 2012-4-22
2 1 P2 2 30 2012-4-15
3 1 P1 2 20 2012-4-23
4 1 P1 1 15 2012-4-30 <- //P1的价格有所变化(不必理会)
5 1 P3 1 20 2012-3-30
6 2 P1 5 60 2012-2-5
7 2 P4 2 30 2012-4-2
8 2 P6 1 100 2012-4-28

条件 统计出每一个销售相同产品的上月销售数量和价格按上述表为例,结果应该是:
Order
SalesID PName QUANTITY AMOUNT
1 P1 8 85
1 P2 2 30
2 P4 2 30
2 P6 1 100

求Linq或Sql语句
[解决办法]

var query = from o in db.Orders
group o by new { o.PName, CREATEDATE.Year, CREATEDATE.Month } into g
select new {
g.First().SalesID,
g.First().PName,
QUANTITY = g.Sum(x => x.QUANTITY),
AMOUNT = g.Sum(x => x.AMOUNT)
};

[解决办法]

var query = from o in db.Orders
let temp=new DateTime(DateTime.Now.Year,DateTime.Now.Month,1)
where o.CREATEDATE.Year<temp && o.CREATEDATE>temp.AddMonth(-1)
group o by o.PName into g


select new {
g.First().SalesID,
PName=g.Key,
QUANTITY = g.Sum(x => x.QUANTITY),
AMOUNT = g.Sum(x => x.AMOUNT)
};

读书人网 >.NET

热点推荐