我在我的Payment表中有一组数据,如下所示
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我想对上述数据进行两组分组:
gName中成功完成的。没问题!!查看输出,如下图所示。DateIssue附录Code>
CoursePaidForMonth进行分组。也就是说,最终输出应该显示4行记录,而不是仅显示3行,它将从本月27到下个月的26进行分组,并由CoursePaidForMonth组成一个组。怎么做?DateIssue附录27/2011 2:22:58下午4:80
我的密码在这里:
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),
};请指点..。
发布于 2011-02-09 02:56:52
您需要将CoursePaidForMonth包含到您的密钥中。就像这样:
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),
};https://stackoverflow.com/questions/4933089
复制相似问题