# List (Of LINQ Enumerable Methods)

Here's a grouped listing of all the methods available on the IEnumerable Class.

Methods which can be composed using VB Query Syntax are generally listed first and are also * highlighted yellow*.

#### Projection Operations #

- Projects each element of a sequence into a new form.**Select**- Projects each element of a sequence to an IEnumerable(Of T) and flattens the resulting sequences into one sequence.**SelectMany**

#### Partitioning Data #

- Bypasses a specified number of elements in a sequence and then returns the remaining elements.**Skip**- Bypasses elements in a sequence as long as a specified condition is true and then returns the remaining elements.**SkipWhile**- Returns a specified number of contiguous elements from the start of a sequence.**Take**- Returns elements from a sequence as long as a specified condition is true.**TakeWhile**

#### Join Operations #

- Correlates the elements of two sequences based on matching keys. The default equality comparer is used to compare keys.**Join**- Correlates the elements of two sequences based on equality of keys and groups the results.**GroupJoin**

#### Grouping Data #

- Groups the elements of a sequence according to a specified key selector function.**GroupBy**

#### Filtering Data #

- Filters a sequence of values based on a predicate.**Where****OfType**- Filters the elements of an IEnumerable depending on their ability to be cast to a specified type.

#### Sorting Data #

- Sorts the elements of a sequence in ascending order according to a key.**OrderBy**- Sorts the elements of a sequence in descending order according to a key.**OrderByDescending**- Performs a subsequent ordering of the elements in a sequence in ascending order according to a key.**ThenBy**- Performs a subsequent ordering of the elements in a sequence in descending order, according to a key.**ThenByDescending****Reverse**- Inverts the order of the elements in a sequence.

#### Aggregation Operations #

- Computes the average of a sequence of values.**Average**- Returns the number of elements in a sequence.**Count**- Returns an Int64 that represents the total number of elements in a sequence.**LongCount**- Returns the maximum value in a sequence of values.**Max**- Returns the minimum value in a sequence of values.**Min**- Computes the sum of a sequence of values.**Sum****Aggregate**- Applies an accumulator function over a sequence.

#### Set Operations #

- Returns distinct elements from a sequence by using the default equality comparer to compare values.**Distinct****Except**- Produces the set difference of two sequences by using the default equality comparer to compare values.**Intersect**- Produces the set intersection of two sequences by using the default equality comparer to compare values.**Union**- Produces the set union of two sequences by using the default equality comparer.**Concat**- Concatenates two sequences.**Zip**- Applies a specified function to the corresponding elements of two sequences, producing a sequence of the results.

#### Quantifier Operations #

**All**- Determines whether all elements of a sequence satisfy a condition.**Any**- Determines whether a sequence contains any elements.**Contains**- Determines whether a sequence contains a specified element by using the default equality comparer.

#### Generation Operations #

**DefaultIfEmpty**- Returns the elements of the specified sequence or the type parameter's default value in a singleton collection if the sequence is empty.**Empty**- Returns an empty IEnumerable(Of T) that has the specified type argument.**Range**- Generates a sequence of integral numbers within a specified range.**Repeat**- Generates a sequence that contains one repeated value.

#### Element Operations #

**First**- Returns the first element of a sequence.**FirstOrDefault**- Returns the first element of a sequence, or a default value if the sequence contains no elements.**Last**- Returns the last element of a sequence.**LastOrDefault**- Returns the last element of a sequence, or a default value if the sequence contains no elements.**ElementAt**- Returns the element at a specified index in a sequence.**ElementAtOrDefault**- Returns the element at a specified index in a sequence or a default value if the index is out of range.**Single**- Returns the only element of a sequence, and throws an exception if there is not exactly one element in the sequence.**SingleOrDefault**- Returns the only element of a sequence, or a default value if the sequence is empty; this method throws an exception if there is more than one element in the sequence.

#### Equality Operations #

**SequenceEqual**- Determines whether two sequences are equal by comparing the elements by using the default equality comparer for their type.

#### Converting Data Types #

**Cast**- Casts the elements of an IEnumerable to the specified type.**AsEnumerable**- Returns the input typed as IEnumerable(Of T).**AsQueryable**- Converts a (generic) IEnumerable to a (generic) IQueryable.**ToArray**- Creates an array from a IEnumerable(Of T).**ToDictionary**- Creates a Dictionary(Of TKey, TValue) from an IEnumerable(Of T)according to a specified key selector function.**ToList**- Creates a List(Of T) from an IEnumerable(Of T).**ToLookup**- Creates a Lookup(Of TKey, TElement) from an IEnumerable(Of T)according to a specified key selector function.