我有一个包含所有订单详细信息的销售表。它有列 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 Sever 2012、VS 2012。