I have a set of data as below from my Payment
table
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
I would like to perform two sets of grouping for the data above:
The closing date is on the 27 of every month, so I would like to group all the data from 27 till 26 of next month into a group. This is done successfully from the
gName
. NO PROBLEM !! Check out the output as the image below.DateIssue AppendCommToMonthΞΞ CoursePaidForMonthΞΞ TotalAmountΞΞ 2/8/2011 6:32:45 PM 2 2 2080.00 2/27/2011 2:22:58 PM 3 2 160.00 3/27/2011 2:22:58 PM 4 2 80.00
Now I would like to perform another grouping on the same query. I would like to group the
CoursePaidForMonth
as well. Meaning to say, the final output should show 4 lines of records instead of just 3, it group by from 27 this month till 26 of next month into a group and also byCoursePaidForMonth
. How to do this?DateIssue AppendCommToMonthΞΞ CoursePaidForMonthΞΞ TotalAmountΞΞ 2/8/2011 6:32:45 PM 2 2 2080.00 2/27/2011 2:22:58 PM 3 2 80.00 3/5/2011 11:14:56 PM 3 3 80.00 3/27/2011 2:22:58 PM 4 2 80.00
My code is here:
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),
};
Please advice..
You need to include the
CoursePaidForMonth
into your key. Something like this: