按月分组数据的最简单方法是什么?按月分组LINQ
在下面的例子中,有一个游戏列表,每个游戏都有玩过的日期和玩过的城市。如果我们想要得到每月玩的游戏数量,按月份分组,明智地使用像我这样的复合年月键?任何其他方法?包括那些不需要诉诸复合分组密钥的那些?
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
};
}
注:我今年包括在分组关键,因为,在这种情况下,我们希望在相对于游戏中的特定月份起的绝对数量时代潮流,不管一年。
我认为这很简单,你可以做到这一点,而不会影响你的游戏类与月份和年份(或可能是一个综合财产)的属性。你可以用扩展方法做一些事情,但我认为这样做会过度。代码很清楚,所以我不会搞砸它:-)。 – Goblin