向Linq group添加其他字段

时间:2015-06-08 13:00:08

标签: c# linq linq-to-sql

我有如下的LINQ to SQL,它工作正常。

        var qry = (from h in dc.Timesheets
                   join s in dc.Users on h.UserID equals s.UserID
                   join ug in dc.UserGroups on s.UserGroupID equals ug.UserGroupID
                   where h.BookedOn >= _dateFrom.Value && h.BookedOn <= _dateTo.Value
                   group h by ug.UserGroupID into g
                   orderby g.Count() descending
                   select new
                   {
                       UserGroupingID = g.Key,
                       BookingsPerDay = g.Count() / days
                   }).ToList();

现在我想添加用户组的名称,但不知怎的,我很难让LINQ正确。 我的有限知识告诉我,我应该将描述添加到Group子句中,如下所示,但这是不可取的:

我试试:

    var qry = (from h in dc.Timesheets
               join s in dc.Users on h.UserID equals s.UserID
               join ug in dc.UserGroups on s.UserGroupID equals ug.UserGroupID
               where h.BookedOn >= _dateFrom.Value && h.BookedOn <= _dateTo.Value
               group h, GroupDescription = ug.Description by ug.UserGroupID into g
               orderby g.Count() descending
               select new
               {
                   UserGroupingID = g.Key,
                   Description = g.Key.GroupDescription
                   BookingsPerDay = g.Count() / days
               }).ToList();
  

错误:无法将lambda表达式转换为type   'System.Collections.Generic.IEqualityComparer',因为它不是   委托类型

2 个答案:

答案 0 :(得分:1)

我想你可能会错过这里的新关键字!!

 var qry = (from h in dc.Timesheets
           join s in dc.Users on h.UserID equals s.UserID
           join ug in dc.UserGroups on s.UserGroupID equals ug.UserGroupID
           where h.BookedOn >= _dateFrom.Value && h.BookedOn <= _dateTo.Value
           group new {h, GroupDescription = ug.Description} by new {GroupDescription} into g
           orderby g.Count() descending
           select new
           {
               UserGroupingID = g.Key,
               Description = g.Key.GroupDescription
               BookingsPerDay = g.Count() / days
           }).ToList();

答案 1 :(得分:0)

==不应该是GroupDescription吗?您是否在select new声明中错过了逗号?