C#按周分组小时以查找存储在孩子中的总小时数

时间:2014-11-06 18:04:35

标签: c# asp.net-mvc grouping

引用子记录时,这非常有用。

我收到错误:无法隐式转换类型' System.Collections.Generic.IEnumerable'到了布尔'

在:

.Select((g, i) => new

提前致谢!

var weekGroups = item.TaskActions
    .All(z => z.TaskActionDurations
        .Where(c => c.TimeStart >= beginReportDate)
        .OrderByDescending(c => c.TimeStart)
        .Select(p => new
        {
            TaskActionDurations = p,
            Hours = p.Hours,
            Year = p.TimeStart.Value.Year.ToString(),
            Week = System.Globalization.CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(
                p.TimeStart.Value, 
                System.Globalization.CalendarWeekRule.FirstFourDayWeek, 
                System.DayOfWeek.Monday)
        })
        .GroupBy(x => new { x.Year, x.Week })
        .Select((g, i) => new
        {
            WeekGroup = g,
            WeekNum = i + 1,
            Year = g.Key.Year,
            CalendarWeek = g.Key.Week,
            Count = g.Count(),
            Hours = g.Sum(s => s.Hours),
            WorkOrderHours = g.Where(w => w.TaskActionDurations.TaskAction.Task.WorkOrders.Any())
                .Sum(s => s.Hours)
        }));

3 个答案:

答案 0 :(得分:0)

这种情况最有可能发生,因为你并没有为多个结果排队等待所有这些因素。

将其切换,以便提供结果,而不是仅仅期望一个输出。

编辑:你可能想尝试选择而不是全部,你应该至少尝试做一些关于为什么会发生这种情况的研究。

答案 1 :(得分:0)

All接受一个谓词函数,给定一个参数返回BOOL,所以你的z函数返回一个IEnumerable的匿名类型,也许你想要Select在你的第一个陈述中,而不是All

答案 2 :(得分:0)

.All期待Func<T,bool>,但是你给它一个lambda表达式,返回IEnumerable个匿名类。您尝试完成的工作并不明显,但您可能希望将All更改为SelectMany。这会将您在lambda中创建的IEnumerable缩小为一个IEnumerable,而使用Select则会为您提供IEnumerable<IEnumerable<anonymousClass>>