LINQ的新手。我很好奇在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执行。
任何帮助非常感谢!!
答案 0 :(得分:6)
我认为以下是你想要的。请注意,您可以从分组中获取密钥,因此无需在那里进行聚合。您需要提供一种机制来选择要为另一个进行聚合的项目。
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 )
};
答案 1 :(得分:2)
或者我倾向于更喜欢的功能方法:
var result = ww.WEATHERREADINGS
.GroupBy(a => a.Date.Hour)
.Select(a => new
{
Hour = a.Key,
Max = a.Max(b => b.TMPS)
});