c# - Linq 'first' 问题

标签 c# linq

我有以下内容,在我添加最后一部分之前效果很好:

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) 
                };

purposeDesc 失败,称这是一个未知错误。从功能上讲,我只想对 totalAttendees 的“总和”做同样的事情——但我只想要第一个元素而不是聚合。

我忽略了什么?

最佳答案

我假设您将 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) };

关于c# - Linq 'first' 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8829530/

相关文章:

c# - ProjectGuid(.csproj),如何正确生成?

c# - OrderBy异常 "At least one object must implement IComparable"

c# - BLToolkit 自定义数据提供者

c# - Linq:如何在不同类型的键上连接表

c# - 二元运算符的参数之一必须是包含类型 c#

c# - 如何从 SOAP 消息中检索集合

c# - 为子类实现接口(interface)的多层次

c# - 将自定义上下文菜单项添加到 Windows 窗体标题栏

c# - 按两个不同类型的字段对不同模型的列表进行排序

c# - 从父 [] 中检索所有子项