/// <summary> /// Builds results into object having collumn names array 2d array data grid /// </summary> public HistogramResults BuildResults() { if (_row == null) throw new InvalidOperationException("LoadTest wasn't performed with this HistogramAggregator"); OrderLearner orderLearner = new OrderLearner(); _row.ForEach(i => orderLearner.Learn(i.Value.ColumnNames)); string[] columnNames = _dimensions .Select(d => d.DimensionName) .Concat(orderLearner.LearnedOrder) .Except(_ignoredColumnNames) .ToArray(); object[][] resultValues = new object[_row.Count][]; int rowIndex = 0; foreach (KeyValuePair<DimensionValues, IMetric> pair in _row) { resultValues[rowIndex] = new object[columnNames.Length]; DimensionValues dimensions = pair.Key; IMetric metrics = pair.Value; for (int i = 0; i < dimensions.Values.Count; i++) { resultValues[rowIndex][i] = dimensions.Values[i]; } for (int i = 0; i < metrics.ColumnNames.Length; i++) { int columnIndex = Array.FindIndex(columnNames, s => s == metrics.ColumnNames[i]); if(columnIndex != -1) resultValues[rowIndex][columnIndex] = metrics.Values[i]; } rowIndex++; } ReplaceNames(columnNames, _columnNameAliases); return new HistogramResults(columnNames, resultValues); }
public ResultsMapper(OrderLearner orderLearner) { if (orderLearner == null) throw new ArgumentNullException(nameof(orderLearner)); _orderLearner = orderLearner; }