Entity Framework - 按分组求和

6

这对我来说是一个相对较新的领域。我有两个实体:InquiriesCategories

每个Inquiry都有一个类别和一个表示整数值(称为TotalTimeSpent)的属性,每个类别都有多个查询。

我想要做的是生成一个按类别分组并总结该类别中所有查询的视图。

目前我的代码如下:

var catgroup = db.CATEGORies.GroupBy(i => i.CATNAME).Sum(c => c.)

显然,每个分组中都有多个问题,所以当我执行c=> c.时,它没有带回我需要与仅组扩展(如FirstOrDefault)一起总和的属性。

我该如何继续操作,以便基于上述分组对每个查询求和TotalTimeSpent

1个回答

12
请尝试使用以下方法:
var catgroup = db.CATEGORies.GroupBy(c => c.CATNAME)
    .Select(g => new {
        g.Key, 
        SUM = g.Sum(s => s.Inqueries.Select(t => t.TotalTimeSpent).Sum())
    });

嗨,Giorgi,感谢您的回复。那个方法不起作用。当我执行c.Key时,我看不到CATNAME或任何其他属性。 - Trinitrotoluene
你确定db.CATEGORIES中除了CATNAME以外还有其他列吗? - Giorgi Nakeuri
是的,那是我的错。当按一个字段分组时,直接选择键!现在检查一下。 - Giorgi Nakeuri
再次感谢!我已经到了那个点,但我的TotalTimeSpent在一个名为Inquiries的导航属性中,所以我需要使用k.Inquiries.TotalTimeSpent。此时TotalTimeSpent似乎是一个集合,那么如何枚举它以进行求和呢? - Trinitrotoluene
那没起作用 - 我想我知道为什么之前出了问题。我的TotalTimeSpent是一个未映射的实体,它的getter从另一个表中计算totaltimespent,并在从其实体访问时返回该值。最终错误:“指定的类型成员'TotalTimeSpent'在LINQ to Entities中不受支持。仅支持初始化程序、实体成员和实体导航属性。”我可能需要重新考虑如何做这件事。非常感谢您花费的时间,您的答案是正确的,所以我会标记它! - Trinitrotoluene
没有"Inqueries"字段。 - phil123456

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接