代码之家  ›  专栏  ›  技术社区  ›  Will

LINQ语法帮助:投影和分组

  •  0
  • Will  · 技术社区  · 15 年前

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

    执行此操作时,我遇到以下错误:

    非常感谢您的帮助!!

    2 回复  |  直到 15 年前
        1
  •  6
  •   tvanfosson    15 年前

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

    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 )
                   };
    
        2
  •  2
  •   Adrian Zanescu    15 年前

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

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