获取对象计数的总和

时间:2018-01-12 16:41:04

标签: c# lambda sum

我有一个像这样的Lambda表达式:

model =
    db.MyTable.Where(
            x => x.deleted == false && x.MyDate.Month == monthInt && x.MyDate.Year == yearInt)
        .GroupBy(x => x.codeAC.ACatagory.Text)
        .Select(y => new MainAssignmentReportVM()
        {
            Title = y.Key,
            Children = y.Select(z => new AssignmentReportVM()
            {
                Assignment = z.codeAC.text,
                Location = z.codeLocation.Location,
                Count =
                    y.Count(
                        t =>
                            t.codeAC.text == z.codeAC.text &&
                            t.codeLocation.Location == z.codeLocation.Location),
                EachFlightTotal = y.Where(s => s.codeAC.text == z.codeAC.text && s.codeLocation.Location == z.codeLocation.Location).Sum(s => s.Flight.Value),
                TotalFlightCombined = y.Sum(x => x.Flight.Value),
                // AssignmentTotalCount -- This is where I need help
            }).Distinct()
        });

我在上面的代码中评论了我需要帮助的地方。 AssignmentTotalCount应为Count的总和。我如何在这个lambda表达式中实现这一点?

我在考虑将AssignmentTotalCount作为一个只读属性并将其设置在课堂中,因为它不会被编辑,或者其他任何东西......但我不知道如何在课堂上设置它。 / p>

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

如何将linq表达式放在外面

int sumCount = 0;

并在

之后做
Count = y.Count(.....

sumCount += Count;``

答案 1 :(得分:1)

AssignmentTotalCount放在您放置的位置,取Count的总和将始终与Count相同。

必须将其设置为更高一级,作为TitleChildren的兄弟(因此类MainAssignmentReportVM的属性而不是类AssignmentReportVM)。那么你应该能够总结Count