不能访问linq中非分组表的字段

本文关键字:字段 访问 linq 不能 | 更新日期: 2023-09-27 17:50:46

我试图使用LINQ连接几个表并检索数据集。但我的问题是,当我分组表时,我无法访问LINQ查询中非分组表的字段。这是我的示例代码块。请帮助

var query = from sb in db.Surfboards
                    join csb in db.CustomerSurfBoards on sb.SurfBoardID equals csb.SurfBoardID
                    join c in db.Customers on csb.CustomerID equals c.CustomerID
                    where c.IsActive
                    group new { sb,csb} by new {sb.ID, csb.ComponentId} into g
                    select new ReportModel()
                    {
                        ReceivedDate = g.First().Name,
                        Number = c.First().Number <------- this cannot be accessed
                    }

我想要实现的是这样的东西

select sb.Id, max(c.Number), cbs.Id from Surfboards as sb
inner join CustomerSurfBoards as cbs on sb.SurfBoardID = csb.SurfBoardID
inner join Customers as c on csb.CustomerID =  c.CustomerID
group by sb.Id, csb.ComponentId

不能访问linq中非分组表的字段

试试这个:

var query = from sb in db.Surfboards
                    join csb in db.CustomerSurfBoards on sb.SurfBoardID equals csb.SurfBoardID
                    join c in db.Customers on csb.CustomerID equals c.CustomerID
                    where c.IsActive
                    select new {sb.id, c.number, cbs.componentid} into tmp
                    from t in tmp
                    group t by new {t.ID, t.ComponentId} into g
                    select new
                    {
                        g.Key.id, g.Key.componentid, number = g.Select(n=>n.number).OrderByDescending().FirstOrDefault()
                    }