C# 字典中的Linq平均值

C# 字典中的Linq平均值,c#,linq,dictionary,C#,Linq,Dictionary,我有一本字典,想得到特定时间段的平均出席率。 到目前为止,我已经完成了这项工作,它为我提供了出席人数: var vCounts = (from pil in planInfoList from s in pil.Value where (s.CheckInActualUtc.TimeOfDay >= TStart && s.CheckInActualUtc.TimeOfDay

我有一本字典,想得到特定时间段的平均出席率。 到目前为止,我已经完成了这项工作,它为我提供了出席人数:

var vCounts = (from pil in planInfoList
               from s in pil.Value
               where (s.CheckInActualUtc.TimeOfDay >= TStart 
                   && s.CheckInActualUtc.TimeOfDay <= TEnd)
               select s).Count();
s.CheckInActualUtc是多个日期

如何获得出勤率? 我已经试过了,但这是不可能的:

var vAverage = from pil in planInfoList
               from s in pil.Value
               where (s.CheckInActualUtc.TimeOfDay >= TStart 
                   && s.CheckInActualUtc.TimeOfDay <= TEnd)
               group s by s.CheckInActualUtc.DayOfYear into g
               select new { av = g.Average() }; 

如果您的意思是,您想要的是每天与会者的平均人数:

var vAverage = (from pil in planInfoList
               from s in pil.Value
               where (s.CheckInActualUtc.TimeOfDay >= TStart 
                   && s.CheckInActualUtc.TimeOfDay <= TEnd)
               group s by s.CheckInActualUtc.DayOfYear into g
               select g.Count()).Average(); 

集团s.价值由。。。也许吧?你的意思是你想得到每天平均数的综合平均数,还是仅仅是总平均数,在这种情况下,分组的结果可以省略只是一个提示:你可以简单地用planInfoList.Values来代替double。我想要一个总平均数。平均数只有可数类型。我不想要每天的结果,而是一个总平均数。如果结果为0,您的解决方案也会给出一个错误。选择g.Count.DefaultIfEmpty.Average;我会修正的。那平均值到底是多少?除非s本身是一个值,否则这将类似于pil.value中s的平面信息列表中的pil,其中s.CheckInActualUtc.TimeOfDay>=TStart&&s.CheckInActualUtc.TimeOfDay或每个其他组的出席次数?比如我们每个与会者?如果不是这个或以上,我不明白你在追求什么。