EF 求和 GroupBy多个字段
GroupBy根据多个字段分组使用方式:
一、使用扩展方法
- query.GroupBy(q => new { q.Year, q.Month })
- .Select(q => new
- {
- Year = q.Key.Year,
- Month = q.Key.Month,
- BuildAmount = q.Sum(i => i.BuildAmount),
- RecAmount = q.Sum(i => i.RecAmount),
- Amount = q.Sum(i => i.Amount),
- RealAmount = q.Sum(i => i.RealAmount)
- });
query.GroupBy(q => new { q.Year, q.Month }) .Select(q => new { Year = q.Key.Year, Month = q.Key.Month, BuildAmount = q.Sum(i => i.BuildAmount), RecAmount = q.Sum(i => i.RecAmount), Amount = q.Sum(i => i.Amount), RealAmount = q.Sum(i => i.RealAmount) });
二、Linq方式
- var query = from l in list
- group l by new { l.Name, l.BatNum } into g
- select new
- {
- Name = g.Key.Name,
- Count = g.Sum(a => a.Count),
- BatNum = g.Key.BatNum
- };
var query = from l in list group l by new { l.Name, l.BatNum } into g select new { Name = g.Key.Name, Count = g.Sum(a => a.Count), BatNum = g.Key.BatNum };
三、生成KeyValue类型
- Dictionary<string,decimal> buildList = _build.FindList().GroupBy(q => q.SaleCode)
- .Select(q => new { Code = q.Key, ReaAmount = q.Sum(i => i.RealAmount) })
- .ToDictionary(q => q.Code, q => q.ReaAmount);
1)单个字段Group by:
- //a.Key类型与a.Province字段类型一样
- .GroupBy(a => a.Province).Select(a => a.Key).ToList();
//a.Key类型与a.Province字段类型一样
.GroupBy(a => a.Province).Select(a => a.Key).ToList();
2)多个字段Group by:
- //此时返回的数据列表需要自己转换
- .GroupBy(a => new { a.Date, a.Week }).Select(a => a.Key).ToList();
//此时返回的数据列表需要自己转换
.GroupBy(a => new { a.Date, a.Week }).Select(a => a.Key).ToList();
3)单个字段Order by:
- .OrderBy(a => a.Date).ToList()
.OrderBy(a => a.Date).ToList()
4)多个字段Order by:
- .OrderBy(a => a.Date).ThenBy(a => a.EndTime).ThenBy(a => a.StartTime).ToList()
.OrderBy(a => a.Date).ThenBy(a => a.EndTime).ThenBy(a => a.StartTime).ToList()
5)多个字段Order by倒序:
- .OrderByDescending(a => a.Date).ThenByDescending(a => a.EndTime).ThenByDescending(a => a.StartTime).ToList()
.OrderByDescending(a => a.Date).ThenByDescending(a => a.EndTime).ThenByDescending(a => a.StartTime).ToList()
http://blog.csdn.net/u011127019/article/details/54943303
原文出处:http://www.itdos.com/CSharp/20150409/0153322.html
树立目标,保持活力,gogogo!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具