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 DataMatrixBuilder Create <T>(IEnumerable <T> values, params Expression <Func <T, object> >[] valueSelectors) { var headers = valueSelectors.Select(func => DataMatrixFactory.GetProperty(func).Name).ToArray(); var selectors = valueSelectors.Select(exp => exp.Compile()).ToArray(); return(Create(values.ToArray(), headers, selectors)); }