【发布时间】:2012-03-27 08:53:27
【问题描述】:
我对此进行了一些研究,到目前为止我发现的最好的方法是在整个数据集上使用 Asenumerable,以便在 linq 中对对象进行过滤,而不是在 DB 上。我正在使用最新的 EF。
我的工作(但很慢)代码是:
var trendData =
from d in ExpenseItemsViewableDirect.AsEnumerable()
group d by new {Period = d.Er_Approved_Date.Year.ToString() + "-" + d.Er_Approved_Date.Month.ToString("00") } into g
select new
{
Period = g.Key.Period,
Total = g.Sum(x => x.Item_Amount),
AveragePerTrans = Math.Round(g.Average(x => x.Item_Amount),2)
};
这给了我格式 YYYY-MM 的月份,以及总金额和平均金额。但是每次都需要几分钟。
我的另一个解决方法是在 SQL 中执行更新查询,因此我有一个 YYYYMM 字段可以作为本机分组依据。更改数据库并非易事,但如有任何建议,我们将不胜感激。
我发现上述代码想法的线程 (http://stackoverflow.com/questions/1059737/group-by-weeks-in-linq-to-entities) 提到“等到 .NET 4.0”。有什么最近推出的东西可以帮助解决这种情况吗?
【问题讨论】:
标签: c# .net entity-framework