すべての注文の詳細を保持する Sales テーブルがあります。ID、SaleDate、Price の列があります。Entity Framework v4 を使用して、過去 30 日間の毎日の合計売上を取得する効率的な方法は何ですか?
public static List<ChartTotal> GetTotalsByDate()
{
List<ChartTotal> totals = new List<ChartTotal>();
ChartTotal totalForDay = null;
DateTime orderDate = DateTime.Now;
int DAY_COUNT = 30;
using (LinqModel db = new LinqModel())
{
do
{
DAY_COUNT--;
orderDate = orderDate.AddDays(-1);
totalForDay = new ChartTotal { OrderDate = String.Format("{0:dd MMM}", orderDate), Total = db.Sales.Where(p=>p.SaleDate < orderDate).Sum(o => o.GrandTotal) };
totals.Add(totalForDay);
} while (DAY_COUNT > 0);
}
return totals;
}
私はそれがそれほど粗雑に行われたくない。どうにかしてすべてのデータを一度に取得できますか。つまり、往復を最小限に抑えるためにループを置き換えたいと考えています。代わりにストアドプロシージャを使用する必要がありますか?
環境: Asp.Net 4.5、EF v4、SQL サーバー 2012、VS 2012。