# Hypercube

This topic describes how to work with selections in a hypercube. There are different ways of making selections in a hypercube. You can select on the cell level, on values in a specific dimension, and within ranges.

Example: Make selection in a hypercube

```
            IEnumerable<int> rowIndices = new[] { 1, 2, 2 };
            IEnumerable<int> colIndices = new[] { 1, 1, 2 };

            IEnumerable<int> values = new[] { 1, 2, 3 };
            bool toggleMode = false;
            bool softLock = true;
            int dimNo = 0;
```

## Making selections on cell level

Selections on hypercubes can be made on the cell level, specifying `rowIndices` and `colIndices`.

Example: Make selection on the cell level in a hypercube

```
            bool didSelectCells = myTable.SelectCells(rowIndices, colIndices, softLock);
```

## Making selections on values in a specific dimension

You can make selections on values in a specific dimension.

Example: Make selection on values in a specific dimension

```
      
		int measureIndexA = 0; // The index of the first measure to base range selection on
		NxRangeSelectInfo selectInfoMeasureA = new NxRangeSelectInfo{MeasureIx = measureIndexA, Range = new Range{Min = 5, Max = 10}};
		int measureIndexB = 1; // The index of the second measure to base range selection on
		NxRangeSelectInfo selectInfoMeasureB = new NxRangeSelectInfo{MeasureIx = measureIndexB, Range = new Range{Min = 0.5, Max = 1.0}};
			
		didSelectCells = table.RangeSelectValues(new List<NxRangeSelectInfo> {selectInfoMeasureA, selectInfoMeasureB});
		
```

Example: Make range selections over measure values

```
            int measureIndexA = 0; // Then index of the first measure to base range selection on the
            NxRangeSelectInfo selectInfoMeasureA = new NxRangeSelectInfo{MeasureIx = measureIndexA, Range = new Range{Min = 5, Max = 10}};

            int measureIndexB = 1; // Then index of the second measure to base range selection on the
            NxRangeSelectInfo selectInfoMeasureB = new NxRangeSelectInfo { MeasureIx = measureIndexB, Range = new Range { Min = 0.5, Max = 1.0 } };
```