我创建了一个填充列表的左连接;但是,现在我尝试按“类别”分组,并在“卷”上汇总,以汇总ASP.NET MVC
视图中的数据。我遇到的问题是我所做的所有研究都显示左联接,其中分组字段源自父表与子表。在这种情况下,我试图通过SicCode(来自Buckets表)引入一个Category来进一步汇总投资组合数据(来自Portfolio表)。我想要从投资组合表中获取所有数据,然后从Buckets表中输入一个类别进行总结。下一步是对该类别进行分组,并为视图中的用户填充摘要数据。
我尝试在命令上添加组,但它不起作用。
感谢您的反馈意见。
以下是控制器中的代码:
var LpAb = (from l in db.Portfolio
join a in db.Buckets on l.SicCodeLP equals a.SicCode into t
from rt in t.DefaultIfEmpty()
group rt by rt.Category into grouped
select new
{
Category = rt.Category,
TotalVolume = t.Sum(x => l.Volume)
}).ToList();
Final Table应如下所示(列以“/”分隔)。
类别/计数/数量
•Crops / 1/384000
•专业/ 1/20465
•牲畜/ 1/80155
原始数据:
投资组合类
编号/日期/客户/ SicCodeLP /卷
1234/31-Dec-16 /客户/ 191/384000
铲斗类
SicCode / SicDetail / Pool / Category
191 /农场&作物/ 1 /作物
答案 0 :(得分:0)
可以使用let
关键字来保存相关子查询。
var LpAb = (
from portfolio in db.Portfolio
let category = db.Buckets
.Where(b => l.SicCodeLP == b.SicCode)
.FirstOrDefault()?.Category ?? ""
group portfolio by category into g
select new {
Category = g.Key,
TotalVolume = g.Sum(porfolio => porfolio.Volume)
}).ToList();