Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }