我想使用LINQ获取“重量”列的SUM并存储在列表中。以下是两列的联接操作代码。
var que = (from o in db.OrderPlans.Where(i => i.DemandId == _demandId)
join f in db.Fabrics
on o.FabricId equals f.Id
select new
{
f.Id,
f.Name,
o.Width,
f.Type,
o.GSM,
o.Weight
}).ToList();
答案 0 :(得分:1)
假设您上面发布的代码有效,并且假设您将其存储在一个名为joinedList的变量中(并且您希望将由所有其他字段的不同组合形成的组的权重之和):
var groupedList = joinedList.GroupBy(grp => new {
grp.Id,
grp.Name,
grp.Width,
grp.Type,
grp.GSM
}).Select(grp => new {
grp.Key.Id,
grp.Key.Name,
grp.Key.Width,
grp.Key.Type,
grp.Key.GSM,
SumOfWeight = grp.Sum(w => w.Weight)
}).ToList();
答案 1 :(得分:0)
在您的代码末尾附加此内容
.Groupby(w => w.Weight).Convert< int >(g=> g.Sum());
答案 2 :(得分:0)
在我看来,Fabric
和OrderPlan
之间存在一对多的关系:每个Fabric
都有零个或多个OrderPlans
,每个{{1 }}恰好属于一个OrderPlan
,即外键引用的Fabric
。
在我看来,您想要具有Fabric
(的几个属性)和这些Fabric
的总权重的几个OrderPlans
属性。
只要您具有一对多关系或多对多关系,并且想获取“带有子项目的项目”,例如学校与学生,客户与订单或订单与客户OrderLines,您使用Queryable.GroupJoin而不是标准联接。
OrderPlans