2011-07-21 17 views
2

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

} 

注:このケースでは、我々は特定の月にプレイされるゲームの絶対数とは対照的に、時間をかけて傾向をしたい、ので、私は関係なく、年の、グループ化キーで年を含めています。

+1

私はあなたのゲームクラスを月と年の属性(あるいはおそらくは組み合わせたプロパティ)でポーリングするのと同じくらい簡単だと思います。あなたは拡張メソッドを使って何かをすることができますが、それは過度のことだと思います。コードが何をしているのかははっきりしているので、私はそれを混乱させないだろう:-)。 – Goblin

答えて

1
var groupings = 
    from game in games 
    group game by new DateTime(game.Date.Year, game.Date.Month, 1) 
0

はい、それは賢明です。次に、各グループごとにCountを使用して、1か月あたりのゲーム数を取得します。

関連する問題