如何使用Entity Framework LINQ获取列的SUM

时间:2019-06-03 07:50:35

标签: c# entity-framework linq

我想使用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();

3 个答案:

答案 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)

在我看来,FabricOrderPlan之间存在一对多的关系:每个Fabric都有零个或多个OrderPlans,每个{{1 }}恰好属于一个OrderPlan,即外键引用的Fabric

在我看来,您想要具有Fabric(的几个属性)和这些Fabric的总权重的几个OrderPlans属性。

只要您具有一对多关系或多对多关系,并且想获取“带有子项目的项目”,例如学校与学生,客户与订单或订单与客户OrderLines,您使用Queryable.GroupJoin而不是标准联接。

OrderPlans