首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mysql到Linq查询

Mysql到Linq查询
EN

Stack Overflow用户
提问于 2019-12-24 11:20:11
回答 2查看 112关注 0票数 0

MySQL查询

代码语言:javascript
运行
复制
select MAX(os.aggregate_date) as lastMonthDay,os.totalYTD
  from (SELECT aggregate_date,Sum(YTD) AS totalYTD 
        FROM tbl_aggregated_tables
          WHERE subscription_type = 'Subcription Income'
        GROUP BY aggregate_date) as os
GROUP by MONTH(os.aggregate_date),YEAR(os.aggregate_date)
ORDER BY lastMonthDay;

转换为此LINQ查询

代码语言:javascript
运行
复制
var income = context.tbl_aggregated_tables
                   .Where(s => s.subscription_type == "Subcription Income")
                   .GroupBy(s => s.aggregate_date)
                   .Select(result => new
                   {
                       date = result.Key,
                       ytdsum = result.Select(x => x.YTD).Sum()
                   })
                   .GroupBy(s => new { month = s.date.Month, year = s.date.Year })
                   .Select(
                    // select max data and take its ytdsum value 
                        ).ToList();

第二次分组的目的是以一年为单位,找出每个月的最大日。现在,如何选择每个月的最大日期及其在第二次分组之后的ytdsum?

更新

代码语言:javascript
运行
复制
income = context.tbl_aggregated_tables
                   .Where(s => s.subscription_type == "Subcription Income")
                   .GroupBy(s => s.aggregate_date)
                   .Select(result => new
                   {
                       date = result.Key,
                       ytdsum = result.Select(x => x.YTD).Sum()
                   })
                   .GroupBy(s => new { s.date.Month, s.date.Year })
                   .Select(
                     x => x.Max(s => s.date)
                   ).ToList()

这样,它只返回日期,而我无法返回列表的完整对象,包括ytdSum。

EN

Stack Overflow用户

发布于 2019-12-24 11:43:49

这应该是可行的:

代码语言:javascript
运行
复制
var income = context.tbl_aggregated_tables
                   .Where(s => s.subscription_type == "Subcription Income")
                   .GroupBy(s => s.aggregate_date)
                   .Select(result => new
                   {
                       date = result.Key,
                       ytdsum = result.Select(x => x.YTD).Sum()
                   })
                   .GroupBy(s => new { month = s.date.Month, year = s.date.Year })
                   .Select(
                        x => x.OrderByDescending(k => k.date).First() 
                   ).ToList();

income现在是一个对象列表,每个对象都有dateytdsum

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59468042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档