[英]Linq to Entity Group by Date
做了很多研究,但仍然有一个艰难的研究。 考虑具有“CreatedOn”,“Amount”,“Type”的事务表的数据库。 我需要能够进行实体查询以获得按不同日期粒度(月/日等)组合在一起的特定类型的事务。
想象一下一张桌子:
2011/1/22 $300 Deposit
2011/2/18 $340 Deposit
2011/3/6 $200 Other
2011/3/6 $100 Deposit
2011/3/7 $50 Deposit
我可以有一个查询,它将按月分组所有存款,以便它可以产生:
2011-1 $300 1deposit
2011-2 $340 1deposit
2011-3 $150 2deposits
那么我如何使这个查询适应白天而不是月?
这是我当前的代码块,但是我得到了一个内部linq异常
不能在A1上分组
var result = context.TransactionEntities.Where(d => d.Type == "Deposit")
.GroupBy(g => new { g.CreatedOn.Year, g.CreatedOn.Month })
.Select(g => new
{
DateKey = g.Key,
TotalDepositAmount = g.Sum(d => d.Amount),
DepositCount = g.Count()
}).ToList();
注意:我目前正在使用MySql连接器,我读过可能这是一个错误?
Func<DateTime, object> groupByClause;
if (groupByDay) groupByClause = date => date.Date;
else if (groupByMonth) groupByClause = date => new { date.Year, date.Month};
else throw new NotSupportedException("Some option should be chosen");
var result = data.Where(d => d.Type == "Deposit")
.GroupBy(groupByClause)
.Select(g => new { DateKey = g.Key,
TotalDepositAmount = g.Sum(d => d.Amount),
DepositCount = g.Count(),
});
当然应该检查linq-2-entities是否会接受它。
这可能是MySQL连接器中的一个错误。 我的解决方案是在.ToList()
之前.GroupBy()
。
检查我的问题中提到的代码: 在LINQ to Entities中按周分组 。 它显示了如何按天和月分组数据。 如果您有任何其他问题,请告诉我。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.