按月分组数据的最简单方法是什么?
在下面的例子中,有一个游戏列表,其中每个游戏都有玩耍的日期和玩游戏的城市。如果我们想要获得每个月玩游戏的数量,通过按月分组,是否明智像我这样使用复合年月密钥?还有其他方法吗?包括那些不需要求助于复合分组键的那些?
public static void GamesByMonth ()
{
var games = new List<Game>()
{
new Game() { Date = new DateTime( 2010, 11, 15 ), City = "Denver"},
new Game() { Date = new DateTime( 2011, 1, 11 ), City = "Chicago"},
new Game() { Date = new DateTime( 2011, 1, 10 ), City = "Houston"},
new Game() { Date = new DateTime( 2011, 3, 21 ), City = "Atlanta"},
new Game() { Date = new DateTime( 2011, 4, 18 ), City = "Denver"},
new Game() { Date = new DateTime( 2011, 4, 29 ), City = "Boston"}
};
var groupings =
from game in games
group game by new
{
game.Date.Year,
game.Date.Month
};
}
注意:我在分组键中包含年份,因为在这种情况下,我们希望随着时间的推移趋势,而不是特定月份的游戏绝对数量,而不管年份。
答案 0 :(得分:1)
var groupings =
from game in games
group game by new DateTime(game.Date.Year, game.Date.Month, 1)
答案 1 :(得分:0)
是的,这是明智的。然后,您只需在每个分组上使用Count
即可获得每月的游戏数量。