C# 代码优化:简化统计查询逻辑
以下是示例代码的优化建议:
- 可以将重复的代码提取出来,放到一个方法中,传入参数来区分查询的时间类型和周期类型,避免大量重复代码。
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;
}
-
可以使用链式调用来简化代码,如将 select 和 Where 方法链式调用在一起。
-
可以使用 switch 语句来替换 if-else 语句,使代码更加清晰易读。
-
可以使用 var 关键字来简化代码,如将 list 的类型改为 var。
通过以上优化,代码更加简洁、易读,也提高了代码的可维护性。
原文地址: https://www.cveoy.top/t/topic/m8JG 著作权归作者所有。请勿转载和采集!