C# LINQ语法帮助:投影和分组

C# LINQ语法帮助:投影和分组,c#,linq,linq-to-sql,C#,Linq,Linq To Sql,林克的新朋友。。我很好奇在LINQ中执行以下SQL查询的语法 SELECT MAX(TMPS), DAY FROM WEATHERREADINGS GROUP BY WEATHERREADINGS.DAY 到目前为止,我所拥有的: var minTemps = from ps in ww.WEATHERREADINGS group ps by ps.DATE.Hour into psByHour select new

林克的新朋友。。我很好奇在LINQ中执行以下SQL查询的语法

SELECT MAX(TMPS), DAY FROM WEATHERREADINGS
GROUP BY WEATHERREADINGS.DAY
到目前为止,我所拥有的:

var minTemps = from ps in ww.WEATHERREADINGS
               group ps by ps.DATE.Hour into psByHour
               select new
               {
                   HourOfDay = psByHour.Max().DATE.Hour,
                   MaxTemp = psByHour.Max().TMPS
               };
执行此操作时,我遇到以下错误:

异常详细信息:System.InvalidOperationException:无法将节点“New”格式化为SQL执行


非常感谢您的帮助

我想下面是你想要的。请注意,您可以从分组中获取密钥,因此无需在分组中进行聚合。您需要提供一种机制来选择要对另一个项目进行聚合的项目

var maxTemps = from ps in ww.WEATHERREADINGS
               group ps by ps.Date.Hour into psByHour
               select new
               {
                    HourOfDay = psByHour.Key,
                    MaxTemp = psByHour.Max( p => p.TMPS )
               };

或者我更喜欢的功能性方法:

var result = ww.WEATHERREADINGS
                .GroupBy(a => a.Date.Hour)
                .Select(a => new
                       {
                         Hour = a.Key,
                         Max = a.Max(b => b.TMPS)
                       });

用“maxTemps”而不是“minTemps”很好,这正是我想要的谢谢。现在,我可以将其用作数据源,并将其绑定到网格+1,我同意,但我尝试以OP要求的格式回答,除非另有令人信服的理由。您的回答是正确的(+1)。我只是想提供另一种选择。我倾向于发现,我的许多小伙伴倾向于把Linq当作C#中的一个小SQL插件,而看不到功能性做事方式的大局。当我将它们暴露在函数语法中时,启示随之而来。