场景描述:

用户在每天都有会N条记录,现在要实现每天有个统计信息,相当外层显示日统计信息,第二层显示每日明细数据。

代码如下:

        /// <summary>
/// 30天内用户的**统计及日明细
/// </summary>
/// <param name="userId"></param>
/// <returns></returns>
public static List<DtoSitDayCountInfo> ListSitInfoFor30Days(int userId)
{
var listResut = new List<DtoSitDayCountInfo>();
try
{
var list = SitInMeditationDal.ListSitInfoFor30Days(userId);
if(list!=null)
{
var groupDay = from listday in list
group listday by new { curDate = listday.EndTime.ToShortDateString() } into g
select new DtoSitDayCountInfo
{
CurDate = g.Key.curDate,
TotalDuration = g.Sum(p => p.Duration),
TotalTimes = g.Count(),
MaxDuration = g.Max(p=>p.Duration),
AvgDuration = g.Average(p=>p.Duration).ToInt32(),
};
if (groupDay != null)
{
listResut = groupDay.ToList();

foreach (var item in listResut)
{
item.ListDay = list.FindAll(p => p.EndTime.ToShortDateString() == item.CurDate);
}
}
}
}
catch (Exception e)
{
Log.Error(e.Message + e.StackTrace);
}
return listResut;
}

--- end ---