我在以模块化方式汇总项目时遇到问题。
我有这堂课:
public enum ReportType
{
Worker,
Management,
Guest
}
public class Report
{
public ReportType Type { get; set; }
public int Lost { get; set; }
public Report(ReportType typ, int los)
{
Type = typ;
Lost = los;
}
}
以及一个获取 列表的方法Report
,并且应该找出并返回Report
损失最大的列表,并根据该数字进行一些计算。我开始了这个方法:
public class ReportsManager
{
public static List<Report> CalculateBiggerLost(List<Report> reportList)
{
int WorkerSum = 0;
int ManagementSum = 0;
int GuestSum = 0;
foreach (Report report in reportList)
{
switch (report.Type)
{
case ReportType.Guest:
{
GuestSum += report.Lost;
break;
}
case ReportType.Management:
{
ManagementSum += report.Lost;
break;
}
case ReportType.Worker:
{
WorkerSum += report.Lost;
break;
}
}
}
if (GuestSum >= ManagementSum && GuestSum >= WorkerSum)
{
// Doing some report
}
else if (WorkerSum >= ManagementSum)
{
// inner Check
}
}
}
但如果我可能在ReportType
枚举中有另一个值然后必须重写代码,那就不好了,而且它不那么可读。我是 linq 的新手,但我开始尝试GroupBy
使用 linq,但是当我得到并回答reportList.GroupBy(x => x.Type);
并且不知道如何处理它时卡住了,就像结构是什么一样?我如何迭代它?