Linq分组数据累加
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
开发工具与关键技术:MVC
作者:盘洪源
撰写时间:2019年7月17日星期三
在做一些数据表格统计的时候,我们需要的就是将数据累加起来然后还要分成一组一组这样,这样的数据看起来易懂,好分析,看下图
看上面这个就是通过一个颜色来进行一个分组然后再累加数据,这样就可以清楚的知道每个颜色的进货数量,这个的账目看起来就比较清楚了。
这个效果怎么做呢?看下代码
var list = (from tbCommodity in myModels.S_Commodity
join tbCommodityDetail in myModels.S_CommodityDetail on tbCommodity.CommodityID equals tbCommodityDetail.CommodityID
join tbStockDetail in myModels.S_StockDetail on tbCommodityDetail.CommodityDetailID equals tbStockDetail.CommodityDetailID
join tbStock in myModels.S_Stock on tbStockDetail.StockID equals tbStock.StockID
where tbStock.BillsDate>=time1s&&tbStock.BillsDate<=time2s
select new
{
tbCommodity.SupplierID,
Amount = tbStockDetail.Amount,
ToMoney = tbCommodity.DropPrice * tbStockDetail.Amount,
ToMoneys = tbCommodity.EvolvePrice * tbStockDetail.Amount
} into dbRepertoryCount
group dbRepertoryCount by dbRepertoryCount.SupplierID into temp
select temp).ToList();
首先先联表把你所需要的数据先查询出来,然后再进行一个分组,这个如果联表查数据这个就不用多说了吧!
然后这句就是通过这个外键ID来进行一个分组,上面这个代码应该很容易看到懂的
group dbRepertoryCount by dbRepertoryCount.SupplierID into temp
然后就是累加数据了,上面这个查出来的数据应该是个二维数组这样的格式,自已查出来的时候自已可以看一下。
首先一个for循环上面查出来的数据
for (int i = 0; i < list.Count; i++)
然后再遍历这个数据
foreach (var item in list[i])
遍历里面就可以做自已想做的累加数据了,这个累加数据简单的就不说了。
然后我这里遍历完了后是选择放入session中的然后再重session中查询出来,
也可以用其他方式也可以,总之方法又不是死的,只要能想的出来就就行了。
这个分组查数据大概就是这样了