林克';第一';问题

本文关键字:问题 第一 林克 | 更新日期: 2023-09-27 18:20:00

我有以下内容,在添加最后一部分之前一直运行良好:

var FbtTotals = from ff in ExpenseItemFbtItems
                group ff by ff.ERLineID into g
                select new { 
                    lineId = g.Key, totalAttendees = g.Sum(
                    m => m.Num_Attendees_In_Group), 
                    attendeeTypes = g.Count(), 
                    purposeDesc = g.FirstOrDefault(n => n.User_Purpose_Description) 
                };

目的Desc失败了,说这是一个未知的错误。从功能上讲,我只想对totalAttendees的"sum"做同样的事情,但我只想要第一个元素,而不是聚合。

我忽略了什么?

林克';第一';问题

我假设您将ORM与LINQ(EF、NHibernate、LINQ to SQL等)结合使用。ORM不支持集合上的窗口函数(这是翻译查询所必需的);它们只支持聚合。

为了执行您想要的操作,您必须检索查询中的所有记录,然后在客户端代码中构造最终对象(获取第一个项)。假设你似乎没有过滤任何东西,你可以试试这个:

var FbtTotals = from ff in ExpenseItemFbtItems.AsEnumerable()
                            group ff by ff.ERLineID into g
             select new { lineId = g.Key, totalAttendees = g.Sum(m => m.Num_Attendees_In_Group), attendeeTypes = g.Count(), purposeDesc = g.FirstOrDefault(n => n.User_Purpose_Description) };