---
title: "Collection | Customer's Canvas On-Premises"
canonical: "https://customerscanvas.com/docs/on-premises/design-atoms-js/reference/design-atoms-model/Collection/"
---

# Collection

> - [`Palette`](https://customerscanvas.com/docs/on-premises/design-atoms-js/reference/design-atoms-model/Palette.md#palette)

## Classes

### Collection

#### Extended by

#### Type Parameters

| Type Parameter |
| ------ |
| `T` |

#### Implements

- `Iterable`\<`T`\>
- [`normalizeAngle`](https://customerscanvas.com/docs/on-premises/design-atoms-js/reference/design-atoms-model/index-1.md#normalizeangle)\<`T`\>

#### Constructors

##### Constructor

```ts
new Collection<T>(items?): Collection<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `items?` | `T`[] |

###### Returns

[`Collection`](#collection)\<`T`\>

##### Constructor

```ts
new Collection<T>(items?): Collection<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `items?` | [`Collection`](#collection)\<`T`\> |

###### Returns

[`Collection`](#collection)\<`T`\>

##### Constructor

```ts
new Collection<T>(...items): Collection<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| ...`items` | `T`[] |

###### Returns

[`Collection`](#collection)\<`T`\>

#### Accessors

##### empty

###### Get Signature

```ts
get empty(): boolean;
```

###### Returns

`boolean`

##### length

###### Get Signature

```ts
get length(): number;
```

###### Returns

`number`

#### Methods

##### \[iterator\]()

```ts
iterator: ArrayIterator<T>;
```

###### Returns

`ArrayIterator`\<`T`\>

###### Implementation of

```ts
Iterable.[iterator]
```

##### add()

```ts
add(...items): void;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| ...`items` | `T`[] |

###### Returns

`void`

##### addRange()

```ts
addRange(items): void;
```

Adds the specified items to the end of the collection.

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `items` | `any` |

###### Returns

`void`

##### aggregate()

###### Call Signature

```ts
aggregate(func): T;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `func` | (`prev`, `current`) => `T` |

###### Returns

`T`

###### Call Signature

```ts
aggregate<TAccumulate>(seed, func): TAccumulate;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TAccumulate` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `seed` | `TAccumulate` |
| `func` | (`prev`, `current`) => `TAccumulate` |

###### Returns

`TAccumulate`

###### Call Signature

```ts
aggregate<TAccumulate, TResult>(
   seed, 
   func, 
   resultSelector): TResult;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TAccumulate` |
| `TResult` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `seed` | `TAccumulate` |
| `func` | (`prev`, `current`) => `TAccumulate` |
| `resultSelector` | (`last`) => `TResult` |

###### Returns

`TResult`

##### all()

```ts
all(predicate): boolean;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `predicate` | (`element`) => `boolean` |

###### Returns

`boolean`

##### alternate()

###### Call Signature

```ts
alternate(alternateValue): IEnumerable<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `alternateValue` | `T` |

###### Returns

`IEnumerable`\<`T`\>

###### Call Signature

```ts
alternate(alternateSequence): IEnumerable<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `alternateSequence` | \{ \[`x`: `number`\]: `T`; `length`: `number`; \} |
| `alternateSequence.length` | `number` |

###### Returns

`IEnumerable`\<`T`\>

###### Call Signature

```ts
alternate(alternateSequence): IEnumerable<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `alternateSequence` | `IEnumerable`\<`T`\> |

###### Returns

`IEnumerable`\<`T`\>

###### Call Signature

```ts
alternate(alternateSequence): IEnumerable<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `alternateSequence` | `T`[] |

###### Returns

`IEnumerable`\<`T`\>

##### any()

```ts
any(predicate?): boolean;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `predicate?` | (`element`) => `boolean` |

###### Returns

`boolean`

##### asEnumerable()

```ts
asEnumerable(): IEnumerable<T>;
```

###### Returns

`IEnumerable`\<`T`\>

##### average()

```ts
average(selector?): number;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `selector?` | (`element`) => `number` |

###### Returns

`number`

##### buffer()

```ts
buffer(count): IEnumerable<T[]>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `count` | `number` |

###### Returns

`IEnumerable`\<`T`[]\>

##### cast()

```ts
cast<TResult>(): IEnumerable<TResult>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TResult` |

###### Returns

`IEnumerable`\<`TResult`\>

##### catchError()

```ts
catchError(handler): IEnumerable<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `handler` | (`exception`) => `void` |

###### Returns

`IEnumerable`\<`T`\>

##### choose()

```ts
choose(selector): IEnumerable<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `selector` | (`element`, `index`) => `T` |

###### Returns

`IEnumerable`\<`T`\>

##### clear()

```ts
clear(): void;
```

Removes all items from the collection

###### Returns

`void`

##### collectionChanged()

```ts
collectionChanged(h): void;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `h` | [`AnyFunction`](https://customerscanvas.com/docs/on-premises/design-atoms-js/reference/design-atoms-model/AnyFunction.md#anyfunction) |

###### Returns

`void`

##### collectionChanged()

```ts
collectionChanged(h): void;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `h` | [`AnyFunction`](https://customerscanvas.com/docs/on-premises/design-atoms-js/reference/design-atoms-model/AnyFunction.md#anyfunction) |

###### Returns

`void`

##### concat()

###### Call Signature

```ts
concat(...sequences): IEnumerable<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| ...`sequences` | `IEnumerable`\<`T`\>[] |

###### Returns

`IEnumerable`\<`T`\>

###### Call Signature

```ts
concat(...sequences): IEnumerable<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| ...`sequences` | `object`[] |

###### Returns

`IEnumerable`\<`T`\>

###### Call Signature

```ts
concat(...sequences): IEnumerable<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| ...`sequences` | `T`[] |

###### Returns

`IEnumerable`\<`T`\>

##### constructor()

```ts
constructor(getEnumerator): never;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `getEnumerator` | () => `IEnumerator`\<`T`\> |

###### Returns

`never`

##### contains()

###### Call Signature

```ts
contains(value): boolean;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `value` | `T` |

###### Returns

`boolean`

###### Call Signature

```ts
contains<TCompare>(value, compareSelector?): boolean;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TCompare` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `value` | `T` |
| `compareSelector?` | (`element`) => `TCompare` |

###### Returns

`boolean`

##### count()

```ts
count(predicate?): number;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `predicate?` | (`element`, `index`) => `boolean` |

###### Returns

`number`

##### defaultIfEmpty()

```ts
defaultIfEmpty(defaultValue?): IEnumerable<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `defaultValue?` | `T` |

###### Returns

`IEnumerable`\<`T`\>

##### distinct()

###### Call Signature

```ts
distinct(): IEnumerable<T>;
```

###### Returns

`IEnumerable`\<`T`\>

###### Call Signature

```ts
distinct<TCompare>(compareSelector): IEnumerable<T>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TCompare` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `compareSelector` | (`element`) => `TCompare` |

###### Returns

`IEnumerable`\<`T`\>

##### distinctUntilChanged()

###### Call Signature

```ts
distinctUntilChanged(): IEnumerable<T>;
```

###### Returns

`IEnumerable`\<`T`\>

###### Call Signature

```ts
distinctUntilChanged<TCompare>(compareSelector): IEnumerable<T>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TCompare` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `compareSelector` | (`element`) => `TCompare` |

###### Returns

`IEnumerable`\<`T`\>

##### doAction()

###### Call Signature

```ts
doAction(action): IEnumerable<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `action` | (`element`, `index`) => `void` |

###### Returns

`IEnumerable`\<`T`\>

###### Call Signature

```ts
doAction(action): IEnumerable<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `action` | (`element`, `index`) => `boolean` |

###### Returns

`IEnumerable`\<`T`\>

##### elementAt()

```ts
elementAt(index): T;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `index` | `number` |

###### Returns

`T`

##### elementAtOrDefault()

```ts
elementAtOrDefault(index, defaultValue?): T;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `index` | `number` |
| `defaultValue?` | `T` |

###### Returns

`T`

##### except()

###### Call Signature

```ts
except(second): IEnumerable<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `second` | \{ \[`x`: `number`\]: `T`; `length`: `number`; \} |
| `second.length` | `number` |

###### Returns

`IEnumerable`\<`T`\>

###### Call Signature

```ts
except<TCompare>(second, compareSelector): IEnumerable<T>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TCompare` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `second` | \{ \[`x`: `number`\]: `T`; `length`: `number`; \} |
| `second.length` | `number` |
| `compareSelector` | (`element`) => `TCompare` |

###### Returns

`IEnumerable`\<`T`\>

###### Call Signature

```ts
except(second): IEnumerable<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `second` | `IEnumerable`\<`T`\> |

###### Returns

`IEnumerable`\<`T`\>

###### Call Signature

```ts
except<TCompare>(second, compareSelector): IEnumerable<T>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TCompare` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `second` | `IEnumerable`\<`T`\> |
| `compareSelector` | (`element`) => `TCompare` |

###### Returns

`IEnumerable`\<`T`\>

###### Call Signature

```ts
except(second): IEnumerable<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `second` | `T`[] |

###### Returns

`IEnumerable`\<`T`\>

###### Call Signature

```ts
except<TCompare>(second, compareSelector): IEnumerable<T>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TCompare` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `second` | `T`[] |
| `compareSelector` | (`element`) => `TCompare` |

###### Returns

`IEnumerable`\<`T`\>

##### finallyAction()

```ts
finallyAction(finallyAction): IEnumerable<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `finallyAction` | () => `void` |

###### Returns

`IEnumerable`\<`T`\>

##### first()

```ts
first(predicate?): T;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `predicate?` | (`element`, `index`) => `boolean` |

###### Returns

`T`

##### firstOrDefault()

```ts
firstOrDefault(predicate?, defaultValue?): T;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `predicate?` | `T` \| ((`element`, `index`) => `boolean`) |
| `defaultValue?` | `T` |

###### Returns

`T`

##### flatten()

```ts
flatten(): IEnumerable<any>;
```

###### Returns

`IEnumerable`\<`any`\>

##### force()

```ts
force(): void;
```

###### Returns

`void`

##### forEach()

###### Call Signature

```ts
forEach(action): void;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `action` | (`element`, `index`) => `void` |

###### Returns

`void`

###### Call Signature

```ts
forEach(action): void;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `action` | (`element`, `index`) => `boolean` |

###### Returns

`void`

##### get()

```ts
get(index): T;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `index` | `number` |

###### Returns

`T`

##### getEnumerator()

```ts
getEnumerator(): IEnumerator<T>;
```

###### Returns

`IEnumerator`\<`T`\>

##### getItem()

```ts
getItem(index): T;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `index` | `any` |

###### Returns

`T`

##### groupBy()

###### Call Signature

```ts
groupBy<TKey>(keySelector): IEnumerable<IGrouping<TKey, T>>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TKey` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `keySelector` | (`element`) => `TKey` |

###### Returns

`IEnumerable`\<`IGrouping`\<`TKey`, `T`\>\>

###### Call Signature

```ts
groupBy<TKey, TElement>(keySelector, elementSelector): IEnumerable<IGrouping<TKey, TElement>>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TKey` |
| `TElement` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `keySelector` | (`element`) => `TKey` |
| `elementSelector` | (`element`) => `TElement` |

###### Returns

`IEnumerable`\<`IGrouping`\<`TKey`, `TElement`\>\>

###### Call Signature

```ts
groupBy<TKey, TElement, TResult>(
   keySelector, 
   elementSelector, 
resultSelector): IEnumerable<TResult>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TKey` |
| `TElement` |
| `TResult` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `keySelector` | (`element`) => `TKey` |
| `elementSelector` | (`element`) => `TElement` |
| `resultSelector` | (`key`, `element`) => `TResult` |

###### Returns

`IEnumerable`\<`TResult`\>

###### Call Signature

```ts
groupBy<TKey, TElement, TResult, TCompare>(
   keySelector, 
   elementSelector, 
   resultSelector, 
compareSelector): IEnumerable<TResult>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TKey` |
| `TElement` |
| `TResult` |
| `TCompare` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `keySelector` | (`element`) => `TKey` |
| `elementSelector` | (`element`) => `TElement` |
| `resultSelector` | (`key`, `element`) => `TResult` |
| `compareSelector` | (`element`) => `TCompare` |

###### Returns

`IEnumerable`\<`TResult`\>

##### groupJoin()

###### Call Signature

```ts
groupJoin<TInner, TKey, TResult>(
   inner, 
   outerKeySelector, 
   innerKeySelector, 
   resultSelector, 
compareSelector?): IEnumerable<TResult>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TInner` |
| `TKey` |
| `TResult` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `inner` | `IEnumerable`\<`TInner`\> |
| `outerKeySelector` | (`outer`) => `TKey` |
| `innerKeySelector` | (`inner`) => `TKey` |
| `resultSelector` | (`outer`, `inner`) => `TResult` |
| `compareSelector?` | (`obj`) => `TKey` |

###### Returns

`IEnumerable`\<`TResult`\>

###### Call Signature

```ts
groupJoin<TInner, TKey, TResult>(
   inner, 
   outerKeySelector, 
   innerKeySelector, 
   resultSelector, 
compareSelector?): IEnumerable<TResult>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TInner` |
| `TKey` |
| `TResult` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `inner` | \{ \[`x`: `number`\]: `TInner`; `length`: `number`; \} |
| `inner.length` | `number` |
| `outerKeySelector` | (`outer`) => `TKey` |
| `innerKeySelector` | (`inner`) => `TKey` |
| `resultSelector` | (`outer`, `inner`) => `TResult` |
| `compareSelector?` | (`obj`) => `TKey` |

###### Returns

`IEnumerable`\<`TResult`\>

###### Call Signature

```ts
groupJoin<TInner, TKey, TResult>(
   inner, 
   outerKeySelector, 
   innerKeySelector, 
   resultSelector, 
compareSelector?): IEnumerable<TResult>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TInner` |
| `TKey` |
| `TResult` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `inner` | `TInner`[] |
| `outerKeySelector` | (`outer`) => `TKey` |
| `innerKeySelector` | (`inner`) => `TKey` |
| `resultSelector` | (`outer`, `inner`) => `TResult` |
| `compareSelector?` | (`obj`) => `TKey` |

###### Returns

`IEnumerable`\<`TResult`\>

##### indexOf()

###### Call Signature

```ts
indexOf(item): number;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `item` | `T` |

###### Returns

`number`

###### Call Signature

```ts
indexOf(predicate): number;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `predicate` | (`element`, `index`) => `boolean` |

###### Returns

`number`

##### insert()

###### Call Signature

```ts
insert(index, second): IEnumerable<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `index` | `number` |
| `second` | `IEnumerable`\<`T`\> |

###### Returns

`IEnumerable`\<`T`\>

###### Call Signature

```ts
insert(index, second): IEnumerable<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `index` | `number` |
| `second` | \{ \[`x`: `number`\]: `T`; `length`: `number`; \} |
| `second.length` | `number` |

###### Returns

`IEnumerable`\<`T`\>

##### insertAt()

```ts
insertAt(index, items): void;
```

Inserts the specified item into the collection at the specified index.

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `index` | `number` |
| `items` | `T` \| `T`[] |

###### Returns

`void`

##### intersect()

###### Call Signature

```ts
intersect(second): IEnumerable<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `second` | \{ \[`x`: `number`\]: `T`; `length`: `number`; \} |
| `second.length` | `number` |

###### Returns

`IEnumerable`\<`T`\>

###### Call Signature

```ts
intersect<TCompare>(second, compareSelector): IEnumerable<T>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TCompare` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `second` | \{ \[`x`: `number`\]: `T`; `length`: `number`; \} |
| `second.length` | `number` |
| `compareSelector` | (`element`) => `TCompare` |

###### Returns

`IEnumerable`\<`T`\>

###### Call Signature

```ts
intersect(second): IEnumerable<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `second` | `IEnumerable`\<`T`\> |

###### Returns

`IEnumerable`\<`T`\>

###### Call Signature

```ts
intersect<TCompare>(second, compareSelector): IEnumerable<T>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TCompare` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `second` | `IEnumerable`\<`T`\> |
| `compareSelector` | (`element`) => `TCompare` |

###### Returns

`IEnumerable`\<`T`\>

###### Call Signature

```ts
intersect(second): IEnumerable<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `second` | `T`[] |

###### Returns

`IEnumerable`\<`T`\>

###### Call Signature

```ts
intersect<TCompare>(second, compareSelector): IEnumerable<T>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TCompare` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `second` | `T`[] |
| `compareSelector` | (`element`) => `TCompare` |

###### Returns

`IEnumerable`\<`T`\>

##### isEmpty()

```ts
isEmpty(): boolean;
```

###### Returns

`boolean`

##### itemAdded()

```ts
itemAdded(h): void;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `h` | (`data?`) => `any` |

###### Returns

`void`

##### itemAdded()

```ts
itemAdded(h): void;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `h` | `any` |

###### Returns

`void`

##### itemMoved()

```ts
itemMoved(h): void;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `h` | (`data?`) => `any` |

###### Returns

`void`

##### itemMoved()

```ts
itemMoved(h): void;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `h` | (`data?`) => `any` |

###### Returns

`void`

##### itemRemoved()

```ts
itemRemoved(h): void;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `h` | (`data?`) => `any` |

###### Returns

`void`

##### itemRemoved()

```ts
itemRemoved(h): void;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `h` | `any` |

###### Returns

`void`

##### join()

###### Call Signature

```ts
join<TInner, TKey, TResult>(
   inner, 
   outerKeySelector, 
   innerKeySelector, 
   resultSelector, 
compareSelector?): IEnumerable<TResult>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TInner` |
| `TKey` |
| `TResult` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `inner` | `IEnumerable`\<`TInner`\> |
| `outerKeySelector` | (`outer`) => `TKey` |
| `innerKeySelector` | (`inner`) => `TKey` |
| `resultSelector` | (`outer`, `inner`) => `TResult` |
| `compareSelector?` | (`obj`) => `TKey` |

###### Returns

`IEnumerable`\<`TResult`\>

###### Call Signature

```ts
join<TInner, TKey, TResult>(
   inner, 
   outerKeySelector, 
   innerKeySelector, 
   resultSelector, 
compareSelector?): IEnumerable<TResult>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TInner` |
| `TKey` |
| `TResult` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `inner` | \{ \[`x`: `number`\]: `TInner`; `length`: `number`; \} |
| `inner.length` | `number` |
| `outerKeySelector` | (`outer`) => `TKey` |
| `innerKeySelector` | (`inner`) => `TKey` |
| `resultSelector` | (`outer`, `inner`) => `TResult` |
| `compareSelector?` | (`obj`) => `TKey` |

###### Returns

`IEnumerable`\<`TResult`\>

###### Call Signature

```ts
join<TInner, TKey, TResult>(
   inner, 
   outerKeySelector, 
   innerKeySelector, 
   resultSelector, 
compareSelector?): IEnumerable<TResult>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TInner` |
| `TKey` |
| `TResult` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `inner` | `TInner`[] |
| `outerKeySelector` | (`outer`) => `TKey` |
| `innerKeySelector` | (`inner`) => `TKey` |
| `resultSelector` | (`outer`, `inner`) => `TResult` |
| `compareSelector?` | (`obj`) => `TKey` |

###### Returns

`IEnumerable`\<`TResult`\>

##### last()

```ts
last(predicate?): T;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `predicate?` | (`element`, `index`) => `boolean` |

###### Returns

`T`

##### lastIndexOf()

###### Call Signature

```ts
lastIndexOf(item): number;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `item` | `T` |

###### Returns

`number`

###### Call Signature

```ts
lastIndexOf(predicate): number;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `predicate` | (`element`, `index`) => `boolean` |

###### Returns

`number`

##### lastOrDefault()

```ts
lastOrDefault(predicate?, defaultValue?): T;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `predicate?` | `T` \| ((`element`, `index`) => `boolean`) |
| `defaultValue?` | `T` |

###### Returns

`T`

##### letBind()

###### Call Signature

```ts
letBind<TResult>(func): IEnumerable<TResult>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TResult` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `func` | (`source`) => `object` |

###### Returns

`IEnumerable`\<`TResult`\>

###### Call Signature

```ts
letBind<TResult>(func): IEnumerable<TResult>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TResult` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `func` | (`source`) => `TResult`[] |

###### Returns

`IEnumerable`\<`TResult`\>

###### Call Signature

```ts
letBind<TResult>(func): IEnumerable<TResult>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TResult` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `func` | (`source`) => `IEnumerable`\<`TResult`\> |

###### Returns

`IEnumerable`\<`TResult`\>

##### log()

###### Call Signature

```ts
log(): IEnumerable<T>;
```

###### Returns

`IEnumerable`\<`T`\>

###### Call Signature

```ts
log<TValue>(selector): IEnumerable<T>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TValue` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `selector` | (`element`) => `TValue` |

###### Returns

`IEnumerable`\<`T`\>

##### max()

```ts
max(selector?): number;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `selector?` | (`element`) => `number` |

###### Returns

`number`

##### maxBy()

```ts
maxBy<TKey>(keySelector): T;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TKey` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `keySelector` | (`element`) => `TKey` |

###### Returns

`T`

##### memoize()

```ts
memoize(): IDisposableEnumerable<T>;
```

###### Returns

`IDisposableEnumerable`\<`T`\>

##### merge()

###### Call Signature

```ts
merge<TResult>(...params): IEnumerable<T>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TResult` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| ...`params` | `IEnumerable`\<`T`\>[] |

###### Returns

`IEnumerable`\<`T`\>

###### Call Signature

```ts
merge<TResult>(...params): IEnumerable<T>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TResult` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| ...`params` | `object`[] |

###### Returns

`IEnumerable`\<`T`\>

###### Call Signature

```ts
merge<TResult>(...params): IEnumerable<T>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TResult` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| ...`params` | `T`[][] |

###### Returns

`IEnumerable`\<`T`\>

##### min()

```ts
min(selector?): number;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `selector?` | (`element`) => `number` |

###### Returns

`number`

##### minBy()

```ts
minBy<TKey>(keySelector): T;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TKey` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `keySelector` | (`element`) => `TKey` |

###### Returns

`T`

##### move()

```ts
move(
   oldIndex, 
   newIndex, 
   supressEvent?): T;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `oldIndex` | `any` |
| `newIndex` | `any` |
| `supressEvent?` | `boolean` |

###### Returns

`T`

##### ofType()

```ts
ofType<TOf>(type): IEnumerable<TOf>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TOf` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `type` | [`Type`](https://customerscanvas.com/docs/on-premises/design-atoms-js/reference/design-atoms-model/linq.md#type)\<`TOf`\> |

###### Returns

`IEnumerable`\<`TOf`\>

##### orderBy()

```ts
orderBy<TKey>(keySelector): IOrderedEnumerable<T>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TKey` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `keySelector` | (`element`) => `TKey` |

###### Returns

`IOrderedEnumerable`\<`T`\>

##### orderByDescending()

```ts
orderByDescending<TKey>(keySelector): IOrderedEnumerable<T>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TKey` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `keySelector` | (`element`) => `TKey` |

###### Returns

`IOrderedEnumerable`\<`T`\>

##### pairwise()

```ts
pairwise<TResult>(selector): IEnumerable<TResult>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TResult` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `selector` | (`prev`, `current`) => `TResult` |

###### Returns

`IEnumerable`\<`TResult`\>

##### partitionBy()

###### Call Signature

```ts
partitionBy<TKey>(keySelector): IEnumerable<IGrouping<TKey, any>>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TKey` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `keySelector` | (`element`) => `TKey` |

###### Returns

`IEnumerable`\<`IGrouping`\<`TKey`, `any`\>\>

###### Call Signature

```ts
partitionBy<TKey, TElement>(keySelector, elementSelector): IEnumerable<IGrouping<TKey, TElement>>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TKey` |
| `TElement` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `keySelector` | (`element`) => `TKey` |
| `elementSelector` | (`element`) => `TElement` |

###### Returns

`IEnumerable`\<`IGrouping`\<`TKey`, `TElement`\>\>

###### Call Signature

```ts
partitionBy<TKey, TElement, TResult>(
   keySelector, 
   elementSelector, 
resultSelector): IEnumerable<TResult>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TKey` |
| `TElement` |
| `TResult` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `keySelector` | (`element`) => `TKey` |
| `elementSelector` | (`element`) => `TElement` |
| `resultSelector` | (`key`, `element`) => `TResult` |

###### Returns

`IEnumerable`\<`TResult`\>

###### Call Signature

```ts
partitionBy<TKey, TElement, TResult, TCompare>(
   keySelector, 
   elementSelector, 
   resultSelector, 
compareSelector): IEnumerable<TResult>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TKey` |
| `TElement` |
| `TResult` |
| `TCompare` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `keySelector` | (`element`) => `TKey` |
| `elementSelector` | (`element`) => `TElement` |
| `resultSelector` | (`key`, `element`) => `TResult` |
| `compareSelector` | (`element`) => `TCompare` |

###### Returns

`IEnumerable`\<`TResult`\>

##### push()

```ts
push(item): number;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `item` | `T` |

###### Returns

`number`

##### remove()

```ts
remove(item): T;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `item` | `T` |

###### Returns

`T`

##### removeAt()

```ts
removeAt(index): T;
```

Removes the item at the specified index of the collection.

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `index` | `number` |

###### Returns

`T`

##### removeRange()

```ts
removeRange(from, to): T[];
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `from` | `number` |
| `to` | `number` |

###### Returns

`T`[]

##### replaceAt()

```ts
replaceAt(item, index): void;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `item` | `T` |
| `index` | `number` |

###### Returns

`void`

##### reverse()

```ts
reverse(): IEnumerable<T>;
```

###### Returns

`IEnumerable`\<`T`\>

##### scan()

###### Call Signature

```ts
scan(func): IEnumerable<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `func` | (`prev`, `current`) => `T` |

###### Returns

`IEnumerable`\<`T`\>

###### Call Signature

```ts
scan<TAccumulate>(seed, func): IEnumerable<TAccumulate>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TAccumulate` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `seed` | `TAccumulate` |
| `func` | (`prev`, `current`) => `TAccumulate` |

###### Returns

`IEnumerable`\<`TAccumulate`\>

##### select()

```ts
select<TResult>(selector): IEnumerable<TResult>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TResult` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `selector` | (`element`, `index`) => `TResult` |

###### Returns

`IEnumerable`\<`TResult`\>

##### selectMany()

###### Call Signature

```ts
selectMany<TOther>(collectionSelector): IEnumerable<TOther>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TOther` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `collectionSelector` | (`element`, `index`) => `IEnumerable`\<`TOther`\> |

###### Returns

`IEnumerable`\<`TOther`\>

###### Call Signature

```ts
selectMany<TCollection, TResult>(collectionSelector, resultSelector): IEnumerable<TResult>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TCollection` |
| `TResult` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `collectionSelector` | (`element`, `index`) => `IEnumerable`\<`TCollection`\> |
| `resultSelector` | (`outer`, `inner`) => `TResult` |

###### Returns

`IEnumerable`\<`TResult`\>

###### Call Signature

```ts
selectMany<TOther>(collectionSelector): IEnumerable<TOther>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TOther` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `collectionSelector` | (`element`, `index`) => `TOther`[] |

###### Returns

`IEnumerable`\<`TOther`\>

###### Call Signature

```ts
selectMany<TCollection, TResult>(collectionSelector, resultSelector): IEnumerable<TResult>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TCollection` |
| `TResult` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `collectionSelector` | (`element`, `index`) => `TCollection`[] |
| `resultSelector` | (`outer`, `inner`) => `TResult` |

###### Returns

`IEnumerable`\<`TResult`\>

###### Call Signature

```ts
selectMany<TOther>(collectionSelector): IEnumerable<TOther>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TOther` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `collectionSelector` | (`element`, `index`) => `object` |

###### Returns

`IEnumerable`\<`TOther`\>

###### Call Signature

```ts
selectMany<TCollection, TResult>(collectionSelector, resultSelector): IEnumerable<TResult>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TCollection` |
| `TResult` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `collectionSelector` | (`element`, `index`) => `object` |
| `resultSelector` | (`outer`, `inner`) => `TResult` |

###### Returns

`IEnumerable`\<`TResult`\>

##### sequenceEqual()

###### Call Signature

```ts
sequenceEqual(second): boolean;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `second` | \{ \[`x`: `number`\]: `T`; `length`: `number`; \} |
| `second.length` | `number` |

###### Returns

`boolean`

###### Call Signature

```ts
sequenceEqual<TCompare>(second, compareSelector): boolean;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TCompare` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `second` | \{ \[`x`: `number`\]: `T`; `length`: `number`; \} |
| `second.length` | `number` |
| `compareSelector` | (`element`) => `TCompare` |

###### Returns

`boolean`

###### Call Signature

```ts
sequenceEqual(second): boolean;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `second` | `IEnumerable`\<`T`\> |

###### Returns

`boolean`

###### Call Signature

```ts
sequenceEqual<TCompare>(second, compareSelector): boolean;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TCompare` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `second` | `IEnumerable`\<`T`\> |
| `compareSelector` | (`element`) => `TCompare` |

###### Returns

`boolean`

###### Call Signature

```ts
sequenceEqual(second): boolean;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `second` | `T`[] |

###### Returns

`boolean`

###### Call Signature

```ts
sequenceEqual<TCompare>(second, compareSelector): boolean;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TCompare` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `second` | `T`[] |
| `compareSelector` | (`element`) => `TCompare` |

###### Returns

`boolean`

##### set()

```ts
set(index, value): void;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `index` | `number` |
| `value` | `T` |

###### Returns

`void`

##### setRange()

```ts
setRange(items): void;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `items` | `any` |

###### Returns

`void`

##### share()

```ts
share(): IDisposableEnumerable<T>;
```

###### Returns

`IDisposableEnumerable`\<`T`\>

##### shuffle()

```ts
shuffle(): IEnumerable<T>;
```

###### Returns

`IEnumerable`\<`T`\>

##### single()

```ts
single(predicate?): T;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `predicate?` | (`element`, `index`) => `boolean` |

###### Returns

`T`

##### singleOrDefault()

```ts
singleOrDefault(predicate?, defaultValue?): T;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `predicate?` | (`element`, `index`) => `boolean` |
| `defaultValue?` | `T` |

###### Returns

`T`

##### skip()

```ts
skip(count): IEnumerable<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `count` | `number` |

###### Returns

`IEnumerable`\<`T`\>

##### skipWhile()

```ts
skipWhile(predicate): IEnumerable<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `predicate` | (`element`, `index`) => `boolean` |

###### Returns

`IEnumerable`\<`T`\>

##### sum()

```ts
sum(selector?): number;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `selector?` | (`element`) => `number` |

###### Returns

`number`

##### take()

```ts
take(count): IEnumerable<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `count` | `number` |

###### Returns

`IEnumerable`\<`T`\>

##### takeExceptLast()

```ts
takeExceptLast(count?): IEnumerable<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `count?` | `number` |

###### Returns

`IEnumerable`\<`T`\>

##### takeFromLast()

```ts
takeFromLast(count): IEnumerable<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `count` | `number` |

###### Returns

`IEnumerable`\<`T`\>

##### takeWhile()

```ts
takeWhile(predicate): IEnumerable<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `predicate` | (`element`, `index`) => `boolean` |

###### Returns

`IEnumerable`\<`T`\>

##### toArray()

```ts
toArray(): T[];
```

###### Returns

`T`[]

##### toDictionary()

###### Call Signature

```ts
toDictionary<TKey>(keySelector): IDictionary<TKey, any>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TKey` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `keySelector` | (`element`) => `TKey` |

###### Returns

`IDictionary`\<`TKey`, `any`\>

###### Call Signature

```ts
toDictionary<TKey, TValue>(keySelector, elementSelector): IDictionary<TKey, TValue>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TKey` |
| `TValue` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `keySelector` | (`element`) => `TKey` |
| `elementSelector` | (`element`) => `TValue` |

###### Returns

`IDictionary`\<`TKey`, `TValue`\>

###### Call Signature

```ts
toDictionary<TKey, TValue, TCompare>(
   keySelector, 
   elementSelector, 
compareSelector): IDictionary<TKey, TValue>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TKey` |
| `TValue` |
| `TCompare` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `keySelector` | (`element`) => `TKey` |
| `elementSelector` | (`element`) => `TValue` |
| `compareSelector` | (`key`) => `TCompare` |

###### Returns

`IDictionary`\<`TKey`, `TValue`\>

##### toJoinedString()

###### Call Signature

```ts
toJoinedString(separator?): string;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `separator?` | `string` |

###### Returns

`string`

###### Call Signature

```ts
toJoinedString<TResult>(separator, selector): string;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TResult` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `separator` | `string` |
| `selector` | (`element`, `index`) => `TResult` |

###### Returns

`string`

##### toJSONString()

###### Call Signature

```ts
toJSONString(replacer): string;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `replacer` | (`key`, `value`) => `any` |

###### Returns

`string`

###### Call Signature

```ts
toJSONString(replacer): string;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `replacer` | `any`[] |

###### Returns

`string`

###### Call Signature

```ts
toJSONString(replacer, space): string;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `replacer` | (`key`, `value`) => `any` |
| `space` | `any` |

###### Returns

`string`

###### Call Signature

```ts
toJSONString(replacer, space): string;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `replacer` | `any`[] |
| `space` | `any` |

###### Returns

`string`

##### toLookup()

###### Call Signature

```ts
toLookup<TKey>(keySelector): ILookup<TKey, T>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TKey` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `keySelector` | (`element`) => `TKey` |

###### Returns

`ILookup`\<`TKey`, `T`\>

###### Call Signature

```ts
toLookup<TKey, TElement>(keySelector, elementSelector): ILookup<TKey, TElement>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TKey` |
| `TElement` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `keySelector` | (`element`) => `TKey` |
| `elementSelector` | (`element`) => `TElement` |

###### Returns

`ILookup`\<`TKey`, `TElement`\>

###### Call Signature

```ts
toLookup<TKey, TElement, TCompare>(
   keySelector, 
   elementSelector, 
compareSelector): ILookup<TKey, TElement>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TKey` |
| `TElement` |
| `TCompare` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `keySelector` | (`element`) => `TKey` |
| `elementSelector` | (`element`) => `TElement` |
| `compareSelector` | (`key`) => `TCompare` |

###### Returns

`ILookup`\<`TKey`, `TElement`\>

##### toObject()

```ts
toObject(keySelector, elementSelector?): Object;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `keySelector` | (`element`) => `any` |
| `elementSelector?` | (`element`) => `any` |

###### Returns

`Object`

##### trace()

###### Call Signature

```ts
trace(message?): IEnumerable<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `message?` | `string` |

###### Returns

`IEnumerable`\<`T`\>

###### Call Signature

```ts
trace<TValue>(message, selector): IEnumerable<T>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TValue` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `message` | `string` |
| `selector` | (`element`) => `TValue` |

###### Returns

`IEnumerable`\<`T`\>

##### traverseBreadthFirst()

###### Call Signature

```ts
traverseBreadthFirst(childrenSelector): IEnumerable<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `childrenSelector` | (`element`) => `IEnumerable`\<`T`\> |

###### Returns

`IEnumerable`\<`T`\>

###### Call Signature

```ts
traverseBreadthFirst<TResult>(childrenSelector, resultSelector): IEnumerable<TResult>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TResult` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `childrenSelector` | (`element`) => `IEnumerable`\<`T`\> |
| `resultSelector` | (`element`, `nestLevel`) => `TResult` |

###### Returns

`IEnumerable`\<`TResult`\>

##### traverseDepthFirst()

###### Call Signature

```ts
traverseDepthFirst<TResult>(childrenSelector): IEnumerable<T>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TResult` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `childrenSelector` | (`element`) => `IEnumerable`\<`T`\> |

###### Returns

`IEnumerable`\<`T`\>

###### Call Signature

```ts
traverseDepthFirst<TResult>(childrenSelector, resultSelector?): IEnumerable<TResult>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TResult` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `childrenSelector` | (`element`) => `IEnumerable`\<`T`\> |
| `resultSelector?` | (`element`, `nestLevel`) => `TResult` |

###### Returns

`IEnumerable`\<`TResult`\>

##### union()

###### Call Signature

```ts
union(second): IEnumerable<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `second` | \{ \[`x`: `number`\]: `T`; `length`: `number`; \} |
| `second.length` | `number` |

###### Returns

`IEnumerable`\<`T`\>

###### Call Signature

```ts
union<TCompare>(second, compareSelector): IEnumerable<T>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TCompare` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `second` | \{ \[`x`: `number`\]: `T`; `length`: `number`; \} |
| `second.length` | `number` |
| `compareSelector` | (`element`) => `TCompare` |

###### Returns

`IEnumerable`\<`T`\>

###### Call Signature

```ts
union(second): IEnumerable<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `second` | `IEnumerable`\<`T`\> |

###### Returns

`IEnumerable`\<`T`\>

###### Call Signature

```ts
union<TCompare>(second, compareSelector): IEnumerable<T>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TCompare` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `second` | `IEnumerable`\<`T`\> |
| `compareSelector` | (`element`) => `TCompare` |

###### Returns

`IEnumerable`\<`T`\>

###### Call Signature

```ts
union(second): IEnumerable<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `second` | `T`[] |

###### Returns

`IEnumerable`\<`T`\>

###### Call Signature

```ts
union<TCompare>(second, compareSelector): IEnumerable<T>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TCompare` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `second` | `T`[] |
| `compareSelector` | (`element`) => `TCompare` |

###### Returns

`IEnumerable`\<`T`\>

##### weightedSample()

```ts
weightedSample(weightSelector): IEnumerable<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `weightSelector` | (`element`) => `number` |

###### Returns

`IEnumerable`\<`T`\>

##### where()

```ts
where(predicate): IEnumerable<T>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `predicate` | (`element`, `index`) => `boolean` |

###### Returns

`IEnumerable`\<`T`\>

##### write()

###### Call Signature

```ts
write(separator?): void;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `separator?` | `string` |

###### Returns

`void`

###### Call Signature

```ts
write<TResult>(separator, selector): void;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TResult` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `separator` | `string` |
| `selector` | (`element`) => `TResult` |

###### Returns

`void`

##### writeLine()

###### Call Signature

```ts
writeLine(): void;
```

###### Returns

`void`

###### Call Signature

```ts
writeLine<TResult>(selector): void;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TResult` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `selector` | (`element`) => `TResult` |

###### Returns

`void`

##### zip()

###### Call Signature

```ts
zip<TResult>(second, resultSelector): IEnumerable<TResult>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TResult` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `second` | `IEnumerable`\<`T`\> |
| `resultSelector` | (`first`, `second`, `index`) => `TResult` |

###### Returns

`IEnumerable`\<`TResult`\>

###### Call Signature

```ts
zip<TResult>(second, resultSelector): IEnumerable<TResult>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TResult` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `second` | \{ \[`x`: `number`\]: `T`; `length`: `number`; \} |
| `second.length` | `number` |
| `resultSelector` | (`first`, `second`, `index`) => `TResult` |

###### Returns

`IEnumerable`\<`TResult`\>

###### Call Signature

```ts
zip<TResult>(second, resultSelector): IEnumerable<TResult>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TResult` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `second` | `T`[] |
| `resultSelector` | (`first`, `second`, `index`) => `TResult` |

###### Returns

`IEnumerable`\<`TResult`\>

###### Call Signature

```ts
zip<TResult>(...params): IEnumerable<TResult>;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `TResult` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| ...`params` | `any`[] |

###### Returns

`IEnumerable`\<`TResult`\>
