private static RowCollection MakeRowCollectionForFromTrendVariable([NotNull] MultiyearTrend trend, [NotNull] string variable) { string shortendName = variable; if (shortendName.Length > 30) { shortendName = shortendName.Substring(0, 30); } RowCollection rc = new RowCollection(shortendName, variable); //scenarios var scenarios = trend.Dict.Keys.Select(x => x.DstScenario.FriendlyName).Distinct().ToList(); //values var years = trend.Dict.Keys.Select(x => x.DstYear).Distinct().OrderBy(x => x).ToList(); foreach (var year in years) { if (year == 2017) { var rb = RowBuilder.Start("Year", 2017); var val = trend.Dict[Constants.PresentSlice].GetSliceValueByName(variable); foreach (var scenario in scenarios) { if (scenario == Scenario.Present().FriendlyName) { continue; } rb.Add(scenario, val); } rc.Add(rb); } else { var rb = RowBuilder.Start("Year", year); foreach (var scenario in scenarios) { if (scenario == Scenario.Present().FriendlyName) { continue; } var slicevalues = trend.Dict.Values.FirstOrDefault(x => x.Slice.DstYear == year && x.Slice.DstScenario.FriendlyName == scenario); object o = null; if (slicevalues != null) { o = slicevalues.GetSliceValueByName(variable); } rb.Add(scenario, o); } rc.Add(rb); } } return(rc); }
private static List <RowCollection> MakeRowCollectionForFromMultiTrendVariable([NotNull] MultiyearMultiVariableTrend trend, [NotNull] string variable, out int categoryCount, out int yearCount) { var scenarios = trend.Dict.Keys.Select(x => x.DstScenario).Distinct().ToList(); var categories = trend.Dict.Values.SelectMany(x => x.Values).Where(x => x.VariableName == variable).SelectMany(y => y.Values.Keys) .Distinct().ToList(); categoryCount = categories.Count; var years = trend.Dict.Keys.Select(x => x.DstYear).Distinct().OrderBy(x => x).ToList(); yearCount = years.Count; List <RowCollection> rows = new List <RowCollection>(); var presentSliceValues = trend.Dict[Constants.PresentSlice]; foreach (var scenario in scenarios) { if (scenario == Scenario.Present()) { continue; } RowCollection rc = new RowCollection(scenario.ShortName, scenario.Name); rows.Add(rc); foreach (var year in years) { var rb = RowBuilder.Start("Year", year); if (year == 2017) { foreach (var category in categories) { object o = null; if (presentSliceValues != null) { o = presentSliceValues.GetSliceValueByName(variable, category); } rb.Add(category, o); } } else { foreach (var category in categories) { var slicevalues = trend.Dict.Values.FirstOrDefault(x => x.Slice.DstYear == year && x.Slice.DstScenario == scenario); object o = null; if (slicevalues != null) { o = slicevalues.GetSliceValueByName(variable, category); } rb.Add(category, o); } } rc.Add(rb); } } return(rows); }