以下是示例代码的优化建议:

  1. 可以将重复的代码提取出来,放到一个方法中,传入参数来区分查询的时间类型和周期类型,避免大量重复代码。
private List<WBStatisticsaInfo> GetStatisticsData(int dateType, int cycleType, DateTime startTime, DateTime endTime)
{
    var select = context.WBInfoASet.Select;
    var list = new List<WBStatisticsaInfo>();

    select.Where(s => (dateType == 1 && s.FirstBalanceTime >= startTime && s.FirstBalanceTime <= endTime) || (dateType == 2 && s.SecondBalanceTime >= startTime && s.SecondBalanceTime <= endTime));

    switch (cycleType)
    {
        case 0:
            list = select.GroupBy(s => (dateType == 1 ? s.FirstBalanceTime : s.SecondBalanceTime).Value.ToString("yyyy-MM-dd")).Select(s => new WBStatisticsaInfo()
            {
                DateTime = s.Key.ToString(),
                NetWeightSun = s.Sum(s.Value.NetWeight),
                RealWeightSun = s.Sum(s.Value.RealWeight),
                RoughWeightSun = s.Sum(s.Value.RoughWeight),
                TareWeightSun = s.Sum(s.Value.TareBalanceNum)
            }).ToList();
            break;
        case 1:
            list = select.GroupBy(s => (dateType == 1 ? s.FirstBalanceTime : s.SecondBalanceTime).Value.ToString("yyyy-MM")).Select(s => new WBStatisticsaInfo()
            {
                DateTime = s.Key.ToString(),
                NetWeightSun = s.Sum(s.Value.NetWeight),
                RealWeightSun = s.Sum(s.Value.RealWeight),
                RoughWeightSun = s.Sum(s.Value.RoughWeight),
                TareWeightSun = s.Sum(s.Value.TareBalanceNum)
            }).ToList();
            break;
        default:
            return new ResultListInfo<WBStatisticsaInfo>()
            {
                List = list,
                IsSuccess = false,
                Msg = "周期类型错误",
                ResultCode = ApiStatusCode.FAIL
            };
    }

    return list;
}
  1. 可以使用链式调用来简化代码,如将 select 和 Where 方法链式调用在一起。

  2. 可以使用 switch 语句来替换 if-else 语句,使代码更加清晰易读。

  3. 可以使用 var 关键字来简化代码,如将 list 的类型改为 var。

通过以上优化,代码更加简洁、易读,也提高了代码的可维护性。

C# 代码优化:简化统计查询逻辑

原文地址: https://www.cveoy.top/t/topic/m8JG 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录