using System.Collections.Generic;
public static void Main()
List<ReviewCalculationKpa> ratings = [new()
public static void Test(List<ReviewCalculationKpa> projectBasedKpas)
decimal kpaWeightSum = projectBasedKpas.Sum(x => x.Weighting);
decimal avgRating = projectBasedKpas.Select(kpa =>
return kpa.Kpis.Sum((kpi) =>
return (int)rating * (kpi.Weighting / kpa.Weighting);
catch (DivideByZeroException)
}) * kpa.Weighting / kpaWeightSum;
catch (DivideByZeroException)
Console.WriteLine(avgRating);
public class ReviewCalculationKpa
public decimal Weighting { get; set; }
public ICollection<ReviewCalculationKpi> Kpis { get; set; } = new List<ReviewCalculationKpi>();
public class ReviewCalculationKpi
public int Rating { get; set; }
public decimal Weighting { get; set; }