モジュラー方式でアイテムを合計するのに問題があります。
私はこのクラスを持っています:
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);
、構造が何であるかのように、どうすればよいかわかりませんでしたか? どのように繰り返すのですか?