public IDataMatrix Build() { var cols = DataMatrixFactory.GetColumns(_columnHeaders, _columnHeaders, _dependentColumns.ToArray(), false); var colIndexes = DataMatrixFactory.GetDependencySortOrder(cols); //create data matrix var dm = new DataMatrixLite(_arrValues.GetLength(0), cols.ToArray()); for (var rowIndex = 0; rowIndex < _arrValues.GetLength(0); rowIndex++) { foreach (var colIndex in colIndexes) { var myCol = cols[colIndex]; if (myCol.Compute == null) { dm[rowIndex][colIndex] = _arrValues[rowIndex, colIndex]; } } } //update computed columns dm.ComputeDependentCols(colIndexes); return(dm); }
public static IDataMatrix Create(DataTable table, IEnumerable <string> columns, params DataMatrixColumn[] dependentColumns) { var allColumns = (from DataColumn c in table.Columns select c.ColumnName).ToArray(); var cols = GetColumns(allColumns, columns?.ToArray(), dependentColumns); var colIndexes = GetDependencySortOrder(cols); //create data matrix var dm = new DataMatrixLite(table.Rows.Count, cols.ToArray()); var rowIndex = 0; foreach (DataRow row in table.Rows) { foreach (var colIndex in colIndexes) { var myCol = cols[colIndex]; if (myCol.DependsOn == null) { dm[rowIndex][colIndex] = row[myCol.Name]; } } rowIndex++; } //update computed columns dm.ComputeDependentCols(colIndexes); return(dm); }
public static IDataMatrix Create <T>(IEnumerable <T> values, string[] columnHeaders, Func <T, object>[] valueSelectors, params DataMatrixColumn[] dependentColumns) { Type fieldsType = typeof(T); PropertyInfo[] props = fieldsType.GetProperties(BindingFlags.Public | BindingFlags.Instance); var allColumns = (from PropertyInfo c in props select c.Name).ToArray(); var cols = GetColumns(allColumns, columnHeaders?.ToArray(), dependentColumns, false); var colIndexes = GetDependencySortOrder(cols); //create data matrix var myValues = values.ToArray(); var dm = new DataMatrixLite(myValues.Length, cols.ToArray()); for (var rowIndex = 0; rowIndex < myValues.Length; rowIndex++) { foreach (var colIndex in colIndexes) { var myCol = cols[colIndex]; if (myCol.DependsOn == null) { dm[rowIndex][colIndex] = valueSelectors[colIndex].Invoke(myValues[rowIndex]); } } } //update computed columns dm.ComputeDependentCols(colIndexes); return(dm); }
public static IDataMatrix Create(object[,] values, string[] columnHeaders) { Debug.Assert(columnHeaders.Length == values.GetLength(1)); var columns = GetColumns(columnHeaders, null, new DataMatrixColumn[0], false).ToArray(); var dm = new DataMatrixLite(values.GetLength(0), columns); //load matrix values for (var rowIndex = 0; rowIndex < values.GetLength(0); rowIndex++) { for (var colIndex = 0; colIndex < values.GetLength(1); colIndex++) { var myCol = columns[colIndex]; if (myCol.Compute == null) { dm[rowIndex][colIndex] = values[rowIndex, colIndex]; } } } return(dm); }