0

ある期間内に作成されたすべてのCustomerOrdersを取得し、それらを日ごとにグループ化して(その日の時間に関係なく)、各日のCustomerOrdersの数も含める必要があります。私のChartDateCountクラスには、DateとCountの2つのプロパティがあります。

したがって、SQLデータの例を次に示します。

OrderID     Created
1           1/1/2012 04:30:12  
2           1/1/2012 05:15:29  
3           1/1/2012 07:09:45  
4           1/3/2012 01:12:21  
5           1/4/2012 06:33:58  
6           1/4/2012 08:30:26  
7           1/5/2012 10:17:41  
8           1/5/2012 11:30:43  
9           1/6/2012 01:11:11  

そして、私の出力は次のようになります。

Date         Count
1/1/2012     3
1/3/2012     1
1/4/2012     2
1/5/2012     2
1/6/2012     1

これは私がこれまでに持っているものです。

Dim chartData as List(Of ChartDateCount) = _
         ( _
            From co In dc.CustomerOrders _
            Where co.Created >= fromDate _
            And co.Created <= toDate _
            Select New ChartDateCount With {.Date = ???, .Count = ???} _
         ).ToList()

私はこれに少し近づきましたが、日付を入力することができませんでした:

From co In CustomerOrders _
Where co.Created >= "1/1/2012" And co.Created <= "1/7/2012" _
Group co By co.Created.Value.Date Into g = Group _
        Select New ChartDateCount With {.Date = ????, .Count = g.Count()}

アップデート

これはまさに私が理論的にやりたいことです(以下を参照)が、このエラーでエラーが発生します:The query operator 'ElementAtOrDefault' is not supported.

From co In CustomerOrders _
Where co.Created >= "1/1/2012" And co.Created <= "1/7/2012" _
Group co By co.Created.Value.Date Into g = Group _
        Select New ChartDateCount With {.Date = g(0).Created.Value.Date, .Count = g.Count()}
4

2 に答える 2

1

私はあなたが探していると思いますg.Key

 Select New ChartDateCount With {.Date = g.Key, .Count = g.Count()}

Key プロパティには、グループ化した値が含まれています。

http://msdn.microsoft.com/en-us/library/bb343251.aspx

于 2012-09-18T14:52:31.943 に答える
0

私は方法を考え出しましたが、誰かがこれを行うためのより効率的な方法を持っている場合は、代わりにあなたの功績を認めます...

Dim chartData as List(Of ChartDateCount) = _
    (
        From co In dc.CustomerOrders _
                Where co.Created > fromDate _
                   And co.Created < toDate _
            Group By co.Created.Value.Date Into g = Group _
                   Select New ChartNameValue With _
                   {
                      .Date = (From co2 As CustomerOrder In g).Take(1).Single().Created.Value.Date, _
                      .Count = g.Count()
                   }
     ).ToList()
于 2012-09-18T17:05:13.770 に答える