示例#1
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);
        }
示例#2
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);
        }
示例#3
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);
        }