遇到groupby和sum有问题

时间:2016-05-18 14:01:20

标签: c# asp.net-mvc-4

晚上好。我目前正在使用asp.net mvc和C#开发一个Web应用程序,而我在使用groupby()和sum()时遇到了麻烦。我附上了输出的屏幕截图,以便更好地了解我所处的情况。 Screenshot1

我想在这里做的是将所有相同的描述分组,并将总和进行求和。我已经尝试过groupby和sum但是我似乎无法达到所需的输出。有人可以给我一些关于如何做到这一点的好点吗?

这是我在经理中尝试过的代码:

    public IEnumerable<TuitionFeeRevenuePerProgramVM_L> getDetails(string orgUnit, short? academicYear, byte? academicPeriod)
    {
        var depts = getAllOrgUnitDepByOrgUnitSchID(orgUnit);

        var revenue = tuitionFee.SearchFor(x => x.AcademicPeriod == academicPeriod && x.AcademicYear == academicYear && depts.Contains(x.Course.OrgUnitCode) && x.IsLatest == true, "AssessmentItem.ChartOfAccount,AssessmentItem.ChartOfAccount.CostCenter,Course,Course.CourseSchedule,Course.OrgUnit,Course.OrgUnit.OrgUnitHierarchy1,Course.OrgUnit.OrgUnitHierarchy1.OrgUnit").ToList();

        var r = revenue.GroupBy(x => x.Course.OrgUnitCode).Select(x => x.First()).ToList(); //this line seems to group them but the output is the first total amount not the overall total

        var rev = revenue.Select(x => new TuitionFeeRevenuePerProgramVM_L
        {
            CostCenterCode = x.AssessmentItem.ChartOfAccount.CostCenterID,
            CostCenterDesc = x.Course.OrgUnit.OrgUnitDesc,
            Subjects = getNumberOfSubjects(x.Course.OrgUnitCode, x.AcademicYear, x.AcademicPeriod),
            Enrolees = revenue.Where(y => y.Course.OrgUnitCode == x.Course.OrgUnitCode).Select(z => z.Course.CourseSchedule.Sum(a => a.EnrolledStudents)).Sum(b => b.Value),//(int)x.Course.CourseSchedule.Sum(y => y.EnrolledStudents),
            Total = (decimal)((x.Course.CourseSchedule.Sum(y => y.EnrolledStudents) * x.Amount) * x.Course.ContactHrs) /*(revenue.Where(y => y.Course.OrgUnitCode == x.Course.OrgUnitCode).Select(z => z.Course.CourseSchedule.Sum(a => a.EnrolledStudents)).Sum(b => b.Value) * revenue.Where(d => d.Course.OrgUnitCode == x.Course.OrgUnitCode).Sum(e=>e.Amount)) * revenue.Where(f => f.Course.OrgUnitCode == x.Course.OrgUnitCode).Sum(g=>g.Course.ContactHrs) //*/
        });

        return rev.ToList();
    }

控制器,模型和视图是一样的,因为所涉及的所有逻辑都将放在管理器中。我在返回时尝试使用Sum(),但由于控制器收到列表而不是小数,因此会出错。

1 个答案:

答案 0 :(得分:1)

from d in data 
group d by d.Description into g
from gg in g 
select new {Description = gg.Key, Sum = gg.Sum(ggg=>ggg.TotalCost)}

没有看到数据类的东西