统计每个季度的数据

本文介绍了一种方法,用于根据指定年份和季度获取透析统计数据。通过使用C#编程语言实现,该方法能够从基础统计数据中筛选并汇总每个季度不同透析方式的频率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 private object GetSeasonDataByYear(DateTime thisTime,
            List<DailyDialysisWayStatistic> baseStatisticsList, List<string> dialysisWayList)
        {
            //源格式:透析方式-季度数组
            List<Tuple<string, object>> tupleList = new List<Tuple<string, object>>();

            var seasonGroups = new[] { "第一季度", "第二季度", "第三季度", "第四季度" };
            dialysisWayList.ForEach(y =>
            {
                int[] countGroups = new int[4];
                for (int i = 1; i <= seasonGroups.Length; i++)
                {
                    DateTime[] seasonDate = GetSeasonDate(thisTime.Year, i);
                    var count = baseStatisticsList
                        .Where(z => z.DialysisWay == y && z.DialysisDate >= seasonDate.First() &&
                                    z.DialysisDate <= seasonDate.Last())
                        .Sum(x => x.Frequency);
                    countGroups[i - 1] = count;
                }
                tupleList.Add(new Tuple<string, object>(y, countGroups));
            });

            return new { seasonGroups, tupleList };
        }



 /// <summary>
        /// 获取输入年-季度的第一天与最后一天
        /// </summary>
        /// <param name="thisYear">当前年</param>
        /// <param name="seasonNum">季度序号</param>
        /// <returns></returns>
        private DateTime[] GetSeasonDate(int thisYear, int seasonNum = 1)
        {
            var firstDate = new DateTime(thisYear, (seasonNum - 1) * 3 + 1, 1);

            //季度最后一天默认30号,1-4季度为31号.
            var day = seasonNum == 1 || seasonNum == 4 ? 31 : 30;
            var lastDate = new DateTime(thisYear, (seasonNum - 1) * 3 + 3, day);

            return new[] { firstDate, lastDate };
        }

 

转载于:https://www.cnblogs.com/shiruina/p/9355096.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值