0

剣道棒グラフを作成しようとしています。オープンしたチケットとクローズしたチケットの数が必要です。その結果を月ごとにグループ化する必要があります。これが私のLINQです

Dim openTickets = (From t In queue _
                   Where _
                   (t.CreateDate.Year = Convert.ToDateTime(DateTime.Now).Year)
                   Group t By _
                   ID = CType(t.CreateDate.Month, Integer), _
                   Month = CType(t.CreateDate.ToString("MMMM"), String) _
                   Into g = Group _
                   Select New With _
                   {.Month = Month.Substring(0, 3), .Opened = g.Where(Function(t) t.CreateDate.Month = ID).Count(Function(t) t.Id)})

Dim closedTickets = (From t In queue _
                   Where _
                   (t.CloseDate.Year = Convert.ToDateTime(DateTime.Now).Year)
                   Group t By _
                   ID = CType(t.CloseDate.Month, Integer), _
                   Month = CType(t.CloseDate.ToString("MMMM"), String) _
                   Into g = Group _
                   Select New With _
                   {.Month = Month.Substring(0, 3), .Closed = g.Where(Function(t) t.CloseDate.Month = ID).Count(Function(t) t.Id)})

Dim ticketCount = openTickets.Union(closedTickets)

これを試すと、「WhereSelectEnumerableIterator」が表示されます。名前が「.Closed」ではなく「.Opened」になるように2番目のクエリを変更すると、機能しますが、「closed」のカウントがわかりません。

最終的に、チャートを提供するために配列の出力を取得しようとしています...これに似ています:

[{"Month":"Apr","Opened":138,"Closed":150}

INSTEAD OF

[{"Month":"Apr","Opened":138,"Closed":0},{"Month":"Apr","Opened":0,"Closed":150}
4

1 に答える 1

3

ステートメントを使用Joinして 2 つをマージし、値を区別する必要があります。このようなもの:

Dim tickets = From open In openTickets _
              Join closed In closedTickets _
              On open.Month Equals closed.Month _
              Select New With _
              {.Month = open.Month, .Opened = open.Opened, .Closed = closed.Closed}
于 2012-11-13T21:36:29.363 に答える