做了很多研究,但仍然有一个艰难的研究.考虑具有“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
那么我如何使这个查询适应白天而不是月?
Can’t group on 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();
解决方法
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是否会接受它.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。