# Enumerable Class

Provides a set of static (Shared in Visual Basic) methods for querying objects that implement IEnumerable<T>.

## Inheritance Hierarchy

System.Object

System.Linq.Enumerable

**Namespace:** System.Linq

**Assembly:** System.Core (in System.Core.dll)

## Syntax

```
'Declaration
<ExtensionAttribute> _
Public NotInheritable Class Enumerable
```

```
public static class Enumerable
```

The Enumerable type exposes the following members.

## Methods

Name | Description | |
---|---|---|

Aggregate<TSource>(IEnumerable<TSource>, Func<TSource, TSource, TSource>) | Applies an accumulator function over a sequence. | |

Aggregate<TSource, TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate, TSource, TAccumulate>) | Applies an accumulator function over a sequence. The specified seed value is used as the initial accumulator value. | |

Aggregate<TSource, TAccumulate, TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate, TSource, TAccumulate>, Func<TAccumulate, TResult>) | Applies an accumulator function over a sequence. The specified seed value is used as the initial accumulator value, and the specified function is used to select the result value. | |

All<TSource> | Determines whether all elements of a sequence satisfy a condition. | |

Any<TSource>(IEnumerable<TSource>) | Determines whether a sequence contains any elements. | |

Any<TSource>(IEnumerable<TSource>, Func<TSource, Boolean>) | Determines whether any element of a sequence satisfies a condition. | |

AsEnumerable<TSource> | Returns the input typed as IEnumerable<T>. | |

Average(IEnumerable<Decimal>) | Computes the average of a sequence of Decimal values. | |

Average(IEnumerable<Nullable<Decimal>>) | Computes the average of a sequence of nullable Decimal values. | |

Average(IEnumerable<Double>) | Computes the average of a sequence of Double values. | |

Average(IEnumerable<Nullable<Double>>) | Computes the average of a sequence of nullable Double values. | |

Average(IEnumerable<Int32>) | Computes the average of a sequence of Int32 values. | |

Average(IEnumerable<Nullable<Int32>>) | Computes the average of a sequence of nullable Int32 values. | |

Average(IEnumerable<Int64>) | Computes the average of a sequence of Int64 values. | |

Average(IEnumerable<Nullable<Int64>>) | Computes the average of a sequence of nullable Int64 values. | |

Average(IEnumerable<Nullable<Single>>) | Computes the average of a sequence of nullable Single values. | |

Average(IEnumerable<Single>) | Computes the average of a sequence of Single values. | |

Average<TSource>(IEnumerable<TSource>, Func<TSource, Decimal>) | Computes the average of a sequence of Decimal values that are obtained by invoking a transform function on each element of the input sequence. | |

Average<TSource>(IEnumerable<TSource>, Func<TSource, Double>) | Computes the average of a sequence of Double values that are obtained by invoking a transform function on each element of the input sequence. | |

Average<TSource>(IEnumerable<TSource>, Func<TSource, Int32>) | Computes the average of a sequence of Int32 values that are obtained by invoking a transform function on each element of the input sequence. | |

Average<TSource>(IEnumerable<TSource>, Func<TSource, Int64>) | Computes the average of a sequence of Int64 values that are obtained by invoking a transform function on each element of the input sequence. | |

Average<TSource>(IEnumerable<TSource>, Func<TSource, Nullable<Decimal>>) | Computes the average of a sequence of nullable Decimal values that are obtained by invoking a transform function on each element of the input sequence. | |

Average<TSource>(IEnumerable<TSource>, Func<TSource, Nullable<Double>>) | Computes the average of a sequence of nullable Double values that are obtained by invoking a transform function on each element of the input sequence. | |

Average<TSource>(IEnumerable<TSource>, Func<TSource, Nullable<Int32>>) | Computes the average of a sequence of nullable Int32 values that are obtained by invoking a transform function on each element of the input sequence. | |

Average<TSource>(IEnumerable<TSource>, Func<TSource, Nullable<Int64>>) | Computes the average of a sequence of nullable Int64 values that are obtained by invoking a transform function on each element of the input sequence. | |

Average<TSource>(IEnumerable<TSource>, Func<TSource, Nullable<Single>>) | Computes the average of a sequence of nullable Single values that are obtained by invoking a transform function on each element of the input sequence. | |

Average<TSource>(IEnumerable<TSource>, Func<TSource, Single>) | Computes the average of a sequence of Single values that are obtained by invoking a transform function on each element of the input sequence. | |

Cast<TResult> | Converts the elements of an IEnumerable to the specified type. | |

Concat<TSource> | Concatenates two sequences. | |

Contains<TSource>(IEnumerable<TSource>, TSource) | Determines whether a sequence contains a specified element by using the default equality comparer. | |

Contains<TSource>(IEnumerable<TSource>, TSource, IEqualityComparer<TSource>) | Determines whether a sequence contains a specified element by using a specified IEqualityComparer<T>. | |

Count<TSource>(IEnumerable<TSource>) | Returns the number of elements in a sequence. | |

Count<TSource>(IEnumerable<TSource>, Func<TSource, Boolean>) | Returns a number that represents how many elements in the specified sequence satisfy a condition. | |

DefaultIfEmpty<TSource>(IEnumerable<TSource>) | Returns the elements of the specified sequence or the type parameter's default value in a singleton collection if the sequence is empty. | |

DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) | Returns the elements of the specified sequence or the specified value in a singleton collection if the sequence is empty. | |

Distinct<TSource>(IEnumerable<TSource>) | Returns distinct elements from a sequence by using the default equality comparer to compare values. | |

Distinct<TSource>(IEnumerable<TSource>, IEqualityComparer<TSource>) | Returns distinct elements from a sequence by using a specified IEqualityComparer<T> to compare values. | |

ElementAt<TSource> | Returns the element at a specified index in a sequence. | |

ElementAtOrDefault<TSource> | Returns the element at a specified index in a sequence or a default value if the index is out of range. | |

Empty<TResult> | Returns an empty IEnumerable<T> that has the specified type argument. | |

Except<TSource>(IEnumerable<TSource>, IEnumerable<TSource>) | Produces the set difference of two sequences by using the default equality comparer to compare values. | |

Except<TSource>(IEnumerable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>) | Produces the set difference of two sequences by using the specified IEqualityComparer<T> to compare values. | |

First<TSource>(IEnumerable<TSource>) | Returns the first element of a sequence. | |

First<TSource>(IEnumerable<TSource>, Func<TSource, Boolean>) | Returns the first element in a sequence that satisfies a specified condition. | |

FirstOrDefault<TSource>(IEnumerable<TSource>) | Returns the first element of a sequence, or a default value if the sequence contains no elements. | |

FirstOrDefault<TSource>(IEnumerable<TSource>, Func<TSource, Boolean>) | Returns the first element of the sequence that satisfies a condition or a default value if no such element is found. | |

GroupBy<TSource, TKey>(IEnumerable<TSource>, Func<TSource, TKey>) | Groups the elements of a sequence according to a specified key selector function. | |

GroupBy<TSource, TKey>(IEnumerable<TSource>, Func<TSource, TKey>, IEqualityComparer<TKey>) | Groups the elements of a sequence according to a specified key selector function and compares the keys by using a specified comparer. | |

GroupBy<TSource, TKey, TElement>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>) | Groups the elements of a sequence according to a specified key selector function and projects the elements for each group by using a specified function. | |

GroupBy<TSource, TKey, TResult>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TKey, IEnumerable<TSource>, TResult>) | Groups the elements of a sequence according to a specified key selector function and creates a result value from each group and its key. | |

GroupBy<TSource, TKey, TElement>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>, IEqualityComparer<TKey>) | Groups the elements of a sequence according to a key selector function. The keys are compared by using a comparer and each group's elements are projected by using a specified function. | |

GroupBy<TSource, TKey, TResult>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TKey, IEnumerable<TSource>, TResult>, IEqualityComparer<TKey>) | Groups the elements of a sequence according to a specified key selector function and creates a result value from each group and its key. The keys are compared by using a specified comparer. | |

GroupBy<TSource, TKey, TElement, TResult>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>, Func<TKey, IEnumerable<TElement>, TResult>) | Groups the elements of a sequence according to a specified key selector function and creates a result value from each group and its key. The elements of each group are projected by using a specified function. | |

GroupBy<TSource, TKey, TElement, TResult>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>, Func<TKey, IEnumerable<TElement>, TResult>, IEqualityComparer<TKey>) | Groups the elements of a sequence according to a specified key selector function and creates a result value from each group and its key. Key values are compared by using a specified comparer, and the elements of each group are projected by using a specified function. | |

GroupJoin<TOuter, TInner, TKey, TResult>(IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter, TKey>, Func<TInner, TKey>, Func<TOuter, IEnumerable<TInner>, TResult>) | Correlates the elements of two sequences based on equality of keys and groups the results. The default equality comparer is used to compare keys. | |

GroupJoin<TOuter, TInner, TKey, TResult>(IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter, TKey>, Func<TInner, TKey>, Func<TOuter, IEnumerable<TInner>, TResult>, IEqualityComparer<TKey>) | Correlates the elements of two sequences based on key equality and groups the results. A specified IEqualityComparer<T> is used to compare keys. | |

Intersect<TSource>(IEnumerable<TSource>, IEnumerable<TSource>) | Produces the set intersection of two sequences by using the default equality comparer to compare values. | |

Intersect<TSource>(IEnumerable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>) | Produces the set intersection of two sequences by using the specified IEqualityComparer<T> to compare values. | |

Join<TOuter, TInner, TKey, TResult>(IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter, TKey>, Func<TInner, TKey>, Func<TOuter, TInner, TResult>) | Correlates the elements of two sequences based on matching keys. The default equality comparer is used to compare keys. | |

Join<TOuter, TInner, TKey, TResult>(IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter, TKey>, Func<TInner, TKey>, Func<TOuter, TInner, TResult>, IEqualityComparer<TKey>) | Correlates the elements of two sequences based on matching keys. A specified IEqualityComparer<T> is used to compare keys. | |

Last<TSource>(IEnumerable<TSource>) | Returns the last element of a sequence. | |

Last<TSource>(IEnumerable<TSource>, Func<TSource, Boolean>) | Returns the last element of a sequence that satisfies a specified condition. | |

LastOrDefault<TSource>(IEnumerable<TSource>) | Returns the last element of a sequence, or a default value if the sequence contains no elements. | |

LastOrDefault<TSource>(IEnumerable<TSource>, Func<TSource, Boolean>) | Returns the last element of a sequence that satisfies a condition or a default value if no such element is found. | |

LongCount<TSource>(IEnumerable<TSource>) | Returns an Int64 that represents the total number of elements in a sequence. | |

LongCount<TSource>(IEnumerable<TSource>, Func<TSource, Boolean>) | Returns an Int64 that represents how many elements in a sequence satisfy a condition. | |

Max(IEnumerable<Decimal>) | Returns the maximum value in a sequence of Decimal values. | |

Max(IEnumerable<Nullable<Decimal>>) | Returns the maximum value in a sequence of nullable Decimal values. | |

Max(IEnumerable<Double>) | Returns the maximum value in a sequence of Double values. | |

Max(IEnumerable<Nullable<Double>>) | Returns the maximum value in a sequence of nullable Double values. | |

Max(IEnumerable<Int32>) | Returns the maximum value in a sequence of Int32 values. | |

Max(IEnumerable<Nullable<Int32>>) | Returns the maximum value in a sequence of nullable Int32 values. | |

Max(IEnumerable<Int64>) | Returns the maximum value in a sequence of Int64 values. | |

Max(IEnumerable<Nullable<Int64>>) | Returns the maximum value in a sequence of nullable Int64 values. | |

Max(IEnumerable<Nullable<Single>>) | Returns the maximum value in a sequence of nullable Single values. | |

Max(IEnumerable<Single>) | Returns the maximum value in a sequence of Single values. | |

Max<TSource>(IEnumerable<TSource>) | Returns the maximum value in a generic sequence. | |

Max<TSource>(IEnumerable<TSource>, Func<TSource, Decimal>) | Invokes a transform function on each element of a sequence and returns the maximum Decimal value. | |

Max<TSource>(IEnumerable<TSource>, Func<TSource, Double>) | Invokes a transform function on each element of a sequence and returns the maximum Double value. | |

Max<TSource>(IEnumerable<TSource>, Func<TSource, Int32>) | Invokes a transform function on each element of a sequence and returns the maximum Int32 value. | |

Max<TSource>(IEnumerable<TSource>, Func<TSource, Int64>) | Invokes a transform function on each element of a sequence and returns the maximum Int64 value. | |

Max<TSource>(IEnumerable<TSource>, Func<TSource, Nullable<Decimal>>) | Invokes a transform function on each element of a sequence and returns the maximum nullable Decimal value. | |

Max<TSource>(IEnumerable<TSource>, Func<TSource, Nullable<Double>>) | Invokes a transform function on each element of a sequence and returns the maximum nullable Double value. | |

Max<TSource>(IEnumerable<TSource>, Func<TSource, Nullable<Int32>>) | Invokes a transform function on each element of a sequence and returns the maximum nullable Int32 value. | |

Max<TSource>(IEnumerable<TSource>, Func<TSource, Nullable<Int64>>) | Invokes a transform function on each element of a sequence and returns the maximum nullable Int64 value. | |

Max<TSource>(IEnumerable<TSource>, Func<TSource, Nullable<Single>>) | Invokes a transform function on each element of a sequence and returns the maximum nullable Single value. | |

Max<TSource>(IEnumerable<TSource>, Func<TSource, Single>) | Invokes a transform function on each element of a sequence and returns the maximum Single value. | |

Max<TSource, TResult>(IEnumerable<TSource>, Func<TSource, TResult>) | Invokes a transform function on each element of a generic sequence and returns the maximum resulting value. | |

Min(IEnumerable<Decimal>) | Returns the minimum value in a sequence of Decimal values. | |

Min(IEnumerable<Nullable<Decimal>>) | Returns the minimum value in a sequence of nullable Decimal values. | |

Min(IEnumerable<Double>) | Returns the minimum value in a sequence of Double values. | |

Min(IEnumerable<Nullable<Double>>) | Returns the minimum value in a sequence of nullable Double values. | |

Min(IEnumerable<Int32>) | Returns the minimum value in a sequence of Int32 values. | |

Min(IEnumerable<Nullable<Int32>>) | Returns the minimum value in a sequence of nullable Int32 values. | |

Min(IEnumerable<Int64>) | Returns the minimum value in a sequence of Int64 values. | |

Min(IEnumerable<Nullable<Int64>>) | Returns the minimum value in a sequence of nullable Int64 values. | |

Min(IEnumerable<Nullable<Single>>) | Returns the minimum value in a sequence of nullable Single values. | |

Min(IEnumerable<Single>) | Returns the minimum value in a sequence of Single values. | |

Min<TSource>(IEnumerable<TSource>) | Returns the minimum value in a generic sequence. | |

Min<TSource>(IEnumerable<TSource>, Func<TSource, Decimal>) | Invokes a transform function on each element of a sequence and returns the minimum Decimal value. | |

Min<TSource>(IEnumerable<TSource>, Func<TSource, Double>) | Invokes a transform function on each element of a sequence and returns the minimum Double value. | |

Min<TSource>(IEnumerable<TSource>, Func<TSource, Int32>) | Invokes a transform function on each element of a sequence and returns the minimum Int32 value. | |

Min<TSource>(IEnumerable<TSource>, Func<TSource, Int64>) | Invokes a transform function on each element of a sequence and returns the minimum Int64 value. | |

Min<TSource>(IEnumerable<TSource>, Func<TSource, Nullable<Decimal>>) | Invokes a transform function on each element of a sequence and returns the minimum nullable Decimal value. | |

Min<TSource>(IEnumerable<TSource>, Func<TSource, Nullable<Double>>) | Invokes a transform function on each element of a sequence and returns the minimum nullable Double value. | |

Min<TSource>(IEnumerable<TSource>, Func<TSource, Nullable<Int32>>) | Invokes a transform function on each element of a sequence and returns the minimum nullable Int32 value. | |

Min<TSource>(IEnumerable<TSource>, Func<TSource, Nullable<Int64>>) | Invokes a transform function on each element of a sequence and returns the minimum nullable Int64 value. | |

Min<TSource>(IEnumerable<TSource>, Func<TSource, Nullable<Single>>) | Invokes a transform function on each element of a sequence and returns the minimum nullable Single value. | |

Min<TSource>(IEnumerable<TSource>, Func<TSource, Single>) | Invokes a transform function on each element of a sequence and returns the minimum Single value. | |

Min<TSource, TResult>(IEnumerable<TSource>, Func<TSource, TResult>) | Invokes a transform function on each element of a generic sequence and returns the minimum resulting value. | |

OfType<TResult> | Filters the elements of an IEnumerable based on a specified type. | |

OrderBy<TSource, TKey>(IEnumerable<TSource>, Func<TSource, TKey>) | Sorts the elements of a sequence in ascending order according to a key. | |

OrderBy<TSource, TKey>(IEnumerable<TSource>, Func<TSource, TKey>, IComparer<TKey>) | Sorts the elements of a sequence in ascending order by using a specified comparer. | |

OrderByDescending<TSource, TKey>(IEnumerable<TSource>, Func<TSource, TKey>) | Sorts the elements of a sequence in descending order according to a key. | |

OrderByDescending<TSource, TKey>(IEnumerable<TSource>, Func<TSource, TKey>, IComparer<TKey>) | Sorts the elements of a sequence in descending order by using a specified comparer. | |

Range | Generates a sequence of integral numbers within a specified range. | |

Repeat<TResult> | Generates a sequence that contains one repeated value. | |

Reverse<TSource> | Inverts the order of the elements in a sequence. | |

Select<TSource, TResult>(IEnumerable<TSource>, Func<TSource, TResult>) | Projects each element of a sequence into a new form. | |

Select<TSource, TResult>(IEnumerable<TSource>, Func<TSource, Int32, TResult>) | Projects each element of a sequence into a new form by incorporating the element's index. | |

SelectMany<TSource, TResult>(IEnumerable<TSource>, Func<TSource, IEnumerable<TResult>>) | Projects each element of a sequence to an IEnumerable<T> and flattens the resulting sequences into one sequence. | |

SelectMany<TSource, TResult>(IEnumerable<TSource>, Func<TSource, Int32, IEnumerable<TResult>>) | Projects each element of a sequence to an IEnumerable<T>, and flattens the resulting sequences into one sequence. The index of each source element is used in the projected form of that element. | |

SelectMany<TSource, TCollection, TResult>(IEnumerable<TSource>, Func<TSource, IEnumerable<TCollection>>, Func<TSource, TCollection, TResult>) | Projects each element of a sequence to an IEnumerable<T>, flattens the resulting sequences into one sequence, and invokes a result selector function on each element therein. | |

SelectMany<TSource, TCollection, TResult>(IEnumerable<TSource>, Func<TSource, Int32, IEnumerable<TCollection>>, Func<TSource, TCollection, TResult>) | Projects each element of a sequence to an IEnumerable<T>, flattens the resulting sequences into one sequence, and invokes a result selector function on each element therein. The index of each source element is used in the intermediate projected form of that element. | |

SequenceEqual<TSource>(IEnumerable<TSource>, IEnumerable<TSource>) | Determines whether two sequences are equal by comparing the elements by using the default equality comparer for their type. | |

SequenceEqual<TSource>(IEnumerable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>) | Determines whether two sequences are equal by comparing their elements by using a specified IEqualityComparer<T>. | |

Single<TSource>(IEnumerable<TSource>) | Returns the only element of a sequence, and throws an exception if there is not exactly one element in the sequence. | |

Single<TSource>(IEnumerable<TSource>, Func<TSource, Boolean>) | Returns the only element of a sequence that satisfies a specified condition, and throws an exception if more than one such element exists. | |

SingleOrDefault<TSource>(IEnumerable<TSource>) | 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. | |

SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource, Boolean>) | Returns the only element of a sequence that satisfies a specified condition or a default value if no such element exists; this method throws an exception if more than one element satisfies the condition. | |

Skip<TSource> | Bypasses a specified number of elements in a sequence and then returns the remaining elements. | |

SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource, Boolean>) | Bypasses elements in a sequence as long as a specified condition is true and then returns the remaining elements. | |

SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource, Int32, Boolean>) | Bypasses elements in a sequence as long as a specified condition is true and then returns the remaining elements. The element's index is used in the logic of the predicate function. | |

Sum(IEnumerable<Decimal>) | Computes the sum of a sequence of Decimal values. | |

Sum(IEnumerable<Nullable<Decimal>>) | Computes the sum of a sequence of nullable Decimal values. | |

Sum(IEnumerable<Double>) | Computes the sum of a sequence of Double values. | |

Sum(IEnumerable<Nullable<Double>>) | Computes the sum of a sequence of nullable Double values. | |

Sum(IEnumerable<Int32>) | Computes the sum of a sequence of Int32 values. | |

Sum(IEnumerable<Nullable<Int32>>) | Computes the sum of a sequence of nullable Int32 values. | |

Sum(IEnumerable<Int64>) | Computes the sum of a sequence of Int64 values. | |

Sum(IEnumerable<Nullable<Int64>>) | Computes the sum of a sequence of nullable Int64 values. | |

Sum(IEnumerable<Nullable<Single>>) | Computes the sum of a sequence of nullable Single values. | |

Sum(IEnumerable<Single>) | Computes the sum of a sequence of Single values. | |

Sum<TSource>(IEnumerable<TSource>, Func<TSource, Decimal>) | Computes the sum of the sequence of Decimal values that are obtained by invoking a transform function on each element of the input sequence. | |

Sum<TSource>(IEnumerable<TSource>, Func<TSource, Double>) | Computes the sum of the sequence of Double values that are obtained by invoking a transform function on each element of the input sequence. | |

Sum<TSource>(IEnumerable<TSource>, Func<TSource, Int32>) | Computes the sum of the sequence of Int32 values that are obtained by invoking a transform function on each element of the input sequence. | |

Sum<TSource>(IEnumerable<TSource>, Func<TSource, Int64>) | Computes the sum of the sequence of Int64 values that are obtained by invoking a transform function on each element of the input sequence. | |

Sum<TSource>(IEnumerable<TSource>, Func<TSource, Nullable<Decimal>>) | Computes the sum of the sequence of nullable Decimal values that are obtained by invoking a transform function on each element of the input sequence. | |

Sum<TSource>(IEnumerable<TSource>, Func<TSource, Nullable<Double>>) | Computes the sum of the sequence of nullable Double values that are obtained by invoking a transform function on each element of the input sequence. | |

Sum<TSource>(IEnumerable<TSource>, Func<TSource, Nullable<Int32>>) | Computes the sum of the sequence of nullable Int32 values that are obtained by invoking a transform function on each element of the input sequence. | |

Sum<TSource>(IEnumerable<TSource>, Func<TSource, Nullable<Int64>>) | Computes the sum of the sequence of nullable Int64 values that are obtained by invoking a transform function on each element of the input sequence. | |

Sum<TSource>(IEnumerable<TSource>, Func<TSource, Nullable<Single>>) | Computes the sum of the sequence of nullable Single values that are obtained by invoking a transform function on each element of the input sequence. | |

Sum<TSource>(IEnumerable<TSource>, Func<TSource, Single>) | Computes the sum of the sequence of Single values that are obtained by invoking a transform function on each element of the input sequence. | |

Take<TSource> | Returns a specified number of contiguous elements from the start of a sequence. | |

TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource, Boolean>) | Returns elements from a sequence as long as a specified condition is true. | |

TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource, Int32, Boolean>) | Returns elements from a sequence as long as a specified condition is true. The element's index is used in the logic of the predicate function. | |

ThenBy<TSource, TKey>(IOrderedEnumerable<TSource>, Func<TSource, TKey>) | Performs a subsequent ordering of the elements in a sequence in ascending order according to a key. | |

ThenBy<TSource, TKey>(IOrderedEnumerable<TSource>, Func<TSource, TKey>, IComparer<TKey>) | Performs a subsequent ordering of the elements in a sequence in ascending order by using a specified comparer. | |

ThenByDescending<TSource, TKey>(IOrderedEnumerable<TSource>, Func<TSource, TKey>) | Performs a subsequent ordering of the elements in a sequence in descending order, according to a key. | |

ThenByDescending<TSource, TKey>(IOrderedEnumerable<TSource>, Func<TSource, TKey>, IComparer<TKey>) | Performs a subsequent ordering of the elements in a sequence in descending order by using a specified comparer. | |

ToArray<TSource> | Creates an array from a IEnumerable<T>. | |

ToDictionary<TSource, TKey>(IEnumerable<TSource>, Func<TSource, TKey>) | Creates a Dictionary<TKey, TValue> from an IEnumerable<T> according to a specified key selector function. | |

ToDictionary<TSource, TKey>(IEnumerable<TSource>, Func<TSource, TKey>, IEqualityComparer<TKey>) | Creates a Dictionary<TKey, TValue> from an IEnumerable<T> according to a specified key selector function and key comparer. | |

ToDictionary<TSource, TKey, TElement>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>) | Creates a Dictionary<TKey, TValue> from an IEnumerable<T> according to specified key selector and element selector functions. | |

ToDictionary<TSource, TKey, TElement>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>, IEqualityComparer<TKey>) | Creates a Dictionary<TKey, TValue> from an IEnumerable<T> according to a specified key selector function, a comparer, and an element selector function. | |

ToList<TSource> | Creates a List<T> from an IEnumerable<T>. | |

ToLookup<TSource, TKey>(IEnumerable<TSource>, Func<TSource, TKey>) | Creates a Lookup<TKey, TElement> from an IEnumerable<T> according to a specified key selector function. | |

ToLookup<TSource, TKey>(IEnumerable<TSource>, Func<TSource, TKey>, IEqualityComparer<TKey>) | Creates a Lookup<TKey, TElement> from an IEnumerable<T> according to a specified key selector function and key comparer. | |

ToLookup<TSource, TKey, TElement>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>) | Creates a Lookup<TKey, TElement> from an IEnumerable<T> according to specified key selector and element selector functions. | |

ToLookup<TSource, TKey, TElement>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>, IEqualityComparer<TKey>) | Creates a Lookup<TKey, TElement> from an IEnumerable<T> according to a specified key selector function, a comparer and an element selector function. | |

Union<TSource>(IEnumerable<TSource>, IEnumerable<TSource>) | Produces the set union of two sequences by using the default equality comparer. | |

Union<TSource>(IEnumerable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>) | Produces the set union of two sequences by using a specified IEqualityComparer<T>. | |

Where<TSource>(IEnumerable<TSource>, Func<TSource, Boolean>) | Filters a sequence of values based on a predicate. | |

Where<TSource>(IEnumerable<TSource>, Func<TSource, Int32, Boolean>) | Filters a sequence of values based on a predicate. Each element's index is used in the logic of the predicate function. | |

Zip<TFirst, TSecond, TResult> | Merges two sequences by using the specified predicate function. |

Top

## Remarks

The methods in this class provide an implementation of the standard query operators for querying data sources that implement IEnumerable<T>. The standard query operators are general purpose methods that follow the LINQ pattern and enable you to express traversal, filter, and projection operations over data in any .NET-based programming language.

The majority of the methods in this class are defined as extension methods that extend IEnumerable<T>. This means they can be called like an instance method on any object that implements IEnumerable<T>.

Methods that are used in a query that returns a sequence of values do not consume the target data until the query object is enumerated. This is known as deferred execution. Methods that are used in a query that returns a singleton value execute and consume the target data immediately.

## Version Information

#### Silverlight

Supported in: 5, 4, 3

#### Silverlight for Windows Phone

Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0

#### XNA Framework

Supported in: Xbox 360, Windows Phone OS 7.0

## Platforms

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.

## Thread Safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.