首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多组数据

多组数据
EN

Stack Overflow用户
提问于 2011-02-08 12:38:20
回答 1查看 317关注 0票数 2

我在我的Payment表中有一组数据,如下所示

代码语言:javascript
复制
DateIssue             | Amount | CoursePaidForMonth | 
  2/3/2011 9:54:07 PM | 2000.00|          2
 2/27/2011 2:22:58 PM |   80.00|          2
 3/5/2011 11:14:56 PM |   80.00|          3
 3/27/2011 2:22:58 PM |   80.00|          2
 2/8/2011 6:32:45 PM  |   80.00|          2

我想对上述数据进行两组分组:

  1. 截止日期是每个月的27日,所以我想把从27日到下个月26的所有数据分组。这是在gName中成功完成的。没问题!!查看输出,如下图所示。

DateIssue附录Code>

  • 现在我想在同一个查询上执行另一个分组。我也想对CoursePaidForMonth进行分组。也就是说,最终输出应该显示4行记录,而不是仅显示3行,它将从本月27到下个月的26进行分组,并由CoursePaidForMonth组成一个组。怎么做?

DateIssue附录27/2011 2:22:58下午4:80

我的密码在这里:

代码语言:javascript
复制
var result = from p in db.Payments
               join soi in db.SaleOrderItems on p.ReferenceId equals soi.Id
               join ct in db.CourseByTutors on soi.InventoryOrCourseId equals ct.CourseId                              
               where p.PayType == (int)PayTypes.PayCourseFee
               && ct.TutorId == tutorId
               let gName = (p.DateIssue.Value.Day < 27) ? (p.DateIssue.Value.Month) : (p.DateIssue.Value.Month % 12 + 1)
               group p by new { gName} into g
               select new
               {
                  DateIssue = g.Select(x => x.DateIssue).First(),
                  AppendCommForWhichMonth = g.Key.gName,
                  CoursePaidForMonth = g.Select(x => x.CoursePaidForMonth).First(),
                                 TotalAmount = g.Sum(x => x.Amount),
               };

请指点..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-09 02:56:52

您需要将CoursePaidForMonth包含到您的密钥中。就像这样:

代码语言:javascript
复制
var query = from p in db.Payments
            join soi in db.SaleOrderItems
                on p.ReferenceId equals soi.Id
            join cbt in db.CourseByTutors
                on soi.InventoryOrCourseId equals cbt.CourseId
            where p.PayType == (int)PayTypes.PayCourseFee && cbt.TutorId == tutorId
            orderby p.DateIssue
            let AppendCommForWhichMonth = p.DateIssue.Month + p.DateIssue.Day < 27 ? 0 : 1
            group p
                by new { AppendCommForWhichMonth, p.CoursePaidForMonth }
                into g
            select new
            {
                g.First().DateIssue,
                g.Key.AppendCommForWhichMonth,
                g.Key.CoursePaidForMonth,
                TotalAmount = g.Sum(p => p.Amount),
            };
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4933089

复制
相关文章

相似问题

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