LINQ:如何执行条件和?

LINQ:如何执行条件和?,linq,Linq,我有一个LINQ查询,它创建了一个新类型,其中包含一周的天数和工作小时数。 我当前的(错误查询)如下所示: var resultSet = (from a in events group a by a.Start.DayOfWeek into g select new DaySummary { day = g.Key.ToString(),

我有一个LINQ查询,它创建了一个新类型,其中包含一周的天数和工作小时数。 我当前的(错误查询)如下所示:

var resultSet = (from a in events
                 group a by a.Start.DayOfWeek into g
                 select new DaySummary
                 {
                     day = g.Key.ToString(),
                     hoursWorked = g.Any(p => p.Title == "Lunch") ? 0 :
                     Math.Round((g.Sum(
                     p => (Decimal.Parse((p.End - p.Start).TotalMinutes.ToString()))) / 60), 2)
                 }).ToList();
希望你能看到我在做什么。然而,任何方法都没有我想要的效果。基本上,我想总结工作时间,但如果标题是“午餐”,我希望它加上0

目前我还不太明白这种逻辑

更新 好吧,我是个白痴。将查询更改为此,现在即可工作。对不起

var resultSet = (from a in events
                             group a by a.Start.DayOfWeek into g
                             select new DaySummary
                             {
                                 day = g.Key.ToString(),
                                 hoursWorked = Math.Round((g.Where(p => p.Title !="Lunch").
                                 Sum(p => (Decimal.Parse((p.End - p.Start).TotalMinutes.ToString()))) / 60), 2)                                    
                             }).ToList();

似乎每个组都是一系列的“时段”,你只想在每次计算中忽略任何“午餐”时段。在这种情况下,您只需要使用Where从总和中删除这些

var hours = events
    .GroupBy(e => e.Start.DayOfWeek)
    .Select(g => new DaySummary {
        day = g.Key.ToString(),
        hoursWorked = Math.Round(
            g.Where(p => p.Title != "Lunch")
            .Sum(pd => (Decimal.Parse((pd.End - pd.Start).TotalMinutes.ToString())) / 60), 2)
    }).ToList();