示例#1
0
        public ICollection <AggregationResultItem <T> > Flatten(FlattenMode mode = FlattenMode.SubLevelFirst)
        {
            List <AggregationResultItem <T> > list = new List <AggregationResultItem <T> >();

            if (mode == FlattenMode.SubLevelFirst || mode == FlattenMode.TopLevelFirst)
            {
                Flatten(Items, list, mode);
            }
            else
            {
                IEnumerable <AggregationResultItem <T>[]> generations = _generations;

                if (mode == FlattenMode.LaterGenerationFirst)
                {
                    generations = generations.Reverse();
                }

                foreach (var gen in generations)
                {
                    list.AddRange(gen);
                }
            }

            return(list.AsReadOnly());
        }
示例#2
0
 public static Matrix <T> Flatten <T>(Matrix <T> matrix, int dimensionFrom, int dimensionTo, FlattenMode mode = Operators.Flatten <T> .DefaultMode)
 {
     return(matrix.Flatten(dimensionFrom, dimensionTo, mode));
 }
示例#3
0
        private static void Flatten(IEnumerable <AggregationResultItem <T> > items, List <AggregationResultItem <T> > list, FlattenMode mode)
        {
            foreach (var item in items)
            {
                if (mode == FlattenMode.TopLevelFirst)
                {
                    list.Add(item);
                }

                Flatten(item.SubItems, list, mode);

                if (mode == FlattenMode.SubLevelFirst)
                {
                    list.Add(item);
                }
            }
        }
示例#4
0
 public Flatten(int dimensionFrom, int dimensionTo, FlattenMode mode = DefaultMode)
 {
     DimensionFrom = dimensionFrom;
     DimensionTo   = dimensionTo;
     Mode          = mode;
 }
示例#5
0
 /// <see cref="Operators.Flatten{T}"/>
 public static Matrix <T> Flatten <T>(this Matrix <T> matrix, int dimensionFrom, int dimensionTo, FlattenMode mode = FlattenMode.Extend)
 {
     return(new Flatten <T>(dimensionFrom, dimensionTo, mode)
     {
         Param = matrix
     });
 }