月単位でデータをグループ化する最も簡単な方法は何ですか?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