private object[,] BuildMatrixFromResult(DataResult parsedResult) { var columns = ColumnSelection.Split(';', StringSplitOptions.RemoveEmptyEntries); if (!columns.Any()) { throw new ArgumentException("No columns to display have been selected"); } var matrix = new object[parsedResult.Data.Count, columns.Length]; var columnIndexes = new List <int>(); foreach (var colName in columns) { var column = parsedResult.Columns.FirstOrDefault(x => x.Id == colName); if (column != null) { columnIndexes.Add(parsedResult.Columns.IndexOf(column)); } } for (var i = 0; i < parsedResult.Data.Count; i++) { for (var j = 0; j < columnIndexes.Count; j++) { matrix.SetValue(parsedResult.Data[i][columnIndexes[j]], i, j); } } return(matrix); }