c# – Linq to Entity Group by Date
发布时间:2020-12-15 21:16:52 所属栏目:百科 来源:网络整理
导读:做了很多研究,但仍然有一个艰难的研究.考虑具有“CreatedOn”,“Amount”,“Type”的事务表的数据库.我需要能够进行实体查询以获得按不同日期粒度(月/日等)组合在一起的特定类型的事务. 想象一下一张桌子: 2011/1/22 $300 Deposit2011/2/18 $340 Deposit201
做了很多研究,但仍然有一个艰难的研究.考虑具有“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异常
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,DepositCount = g.Count(),}); 当然应该检查linq-2-entities是否会接受它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |