嗨,我有一张桌子,有以下信息
id StoretId itemId Mon Tue Wed
1 1 20 33 10 5
2 1 21 1 0 3
3 1 20 3 2 1
4 2 21 2 1 1
5 2 20 1 1 1
6 2 21 4 4 5 我要做的是通过每个storeId获得结果,并通过itemId获得每天的项目总数,所以看起来是这样的。
StoreId 1
itemId Mon Tue Wed
20 36 12 6
21 1 0 3
StoreId 2
itemId Mon Tue Wed
20 1 1 1
21 6 5 6到目前为止,我已经完成了如果用户输入存储列表来获得结果的话,例如
storelist= [{storeId :1}, {storeId: 2}, {storeId: 3}]
var results= DbContext.Set<stores>()
.Where(x=> storelist.Contains(x.storeId)
.Select(y=> new
{
storeId=y.storeId,
itemsdetails= DbContext.Set<maintable>()
.Select(m=> new
{
itemId=m.itemId.Distinct(),
Mon=m.Mon.Sum(),
Tue=m.Tue.Sum(),
Wed=m.Wed.Sum()
}
}在概念上,查询看起来很好,但是它会中断,不会给出结果。请让我知道如何修复它,以获得所需的输出。谢谢
发布于 2016-04-10 07:09:41
必须同时按StoreID和ItemID进行分组,并选择其他值的和,结果如下:
变量结果=来自列表中的项
group item by new
{
item.StoreID,
item.ItemID
} into groupList
select new
{
StoreID = groupList.Key.StoreID,
ItemID = groupList.Key.ItemID,
mon = groupList.Sum(i => i.mon),
tue = groupList.Sum(i => i.tue),
wed = groupList.Sum(i => i.wed)
};发布于 2016-04-10 03:03:32
应使用GroupBy按存储进行分组,然后按组和选择列。
var result = list.GroupBy(o => o.StoreId)
.Select((o, i) => new
{
ID = o.ElementAt(i).ID,
StoreId = o.Key,
Mon = o.Sum(x => x.Mon),
Tue = o.Sum(x => x.Tue),
Wed = o.Sum(x => x.Wed),
}).ToList();https://stackoverflow.com/questions/36525094
复制相似问题