Modifica

Condividi tramite


ImmutableDictionary<TKey,TValue> Class

Definition

Represents an immutable, unordered collection of keys and values.

NuGet package: System.Collections.Immutable (about immutable collections and how to install)

generic <typename TKey, typename TValue>
public ref class ImmutableDictionary sealed : System::Collections::Generic::ICollection<System::Collections::Generic::KeyValuePair<TKey, TValue>>, System::Collections::Generic::IDictionary<TKey, TValue>, System::Collections::Generic::IEnumerable<System::Collections::Generic::KeyValuePair<TKey, TValue>>, System::Collections::Generic::IReadOnlyCollection<System::Collections::Generic::KeyValuePair<TKey, TValue>>, System::Collections::Generic::IReadOnlyDictionary<TKey, TValue>, System::Collections::IDictionary, System::Collections::Immutable::IImmutableDictionary<TKey, TValue>
public sealed class ImmutableDictionary<TKey,TValue> : System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<TKey,TValue>>, System.Collections.Generic.IDictionary<TKey,TValue>, System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>, System.Collections.Generic.IReadOnlyCollection<System.Collections.Generic.KeyValuePair<TKey,TValue>>, System.Collections.Generic.IReadOnlyDictionary<TKey,TValue>, System.Collections.IDictionary, System.Collections.Immutable.IImmutableDictionary<TKey,TValue>
type ImmutableDictionary<'Key, 'Value> = class
    interface IImmutableDictionary<'Key, 'Value>
    interface IReadOnlyDictionary<'Key, 'Value>
    interface IReadOnlyCollection<KeyValuePair<'Key, 'Value>>
    interface seq<KeyValuePair<'Key, 'Value>>
    interface IEnumerable
    interface IDictionary<'Key, 'Value>
    interface ICollection<KeyValuePair<'Key, 'Value>>
    interface IDictionary
    interface ICollection
type ImmutableDictionary<'Key, 'Value> = class
    interface ICollection<KeyValuePair<'Key, 'Value>>
    interface seq<KeyValuePair<'Key, 'Value>>
    interface IEnumerable
    interface IDictionary<'Key, 'Value>
    interface IReadOnlyCollection<KeyValuePair<'Key, 'Value>>
    interface IReadOnlyDictionary<'Key, 'Value>
    interface ICollection
    interface IDictionary
    interface IImmutableDictionary<'Key, 'Value>
type ImmutableDictionary<'Key, 'Value> = class
    interface IImmutableDictionary<'Key, 'Value>
    interface IReadOnlyDictionary<'Key, 'Value>
    interface seq<KeyValuePair<'Key, 'Value>>
    interface IEnumerable
    interface IReadOnlyCollection<KeyValuePair<'Key, 'Value>>
    interface IDictionary<'Key, 'Value>
    interface ICollection<KeyValuePair<'Key, 'Value>>
    interface IDictionary
    interface ICollection
Public NotInheritable Class ImmutableDictionary(Of TKey, TValue)
Implements ICollection(Of KeyValuePair(Of TKey, TValue)), IDictionary, IDictionary(Of TKey, TValue), IEnumerable(Of KeyValuePair(Of TKey, TValue)), IImmutableDictionary(Of TKey, TValue), IReadOnlyCollection(Of KeyValuePair(Of TKey, TValue)), IReadOnlyDictionary(Of TKey, TValue)

Type Parameters

TKey

The type of the keys in the dictionary.

TValue

The type of the values in the dictionary.

Inheritance
ImmutableDictionary<TKey,TValue>
Implements

Examples

This example shows how to create an immutable dictionary and get values from it:

// Create an immutable dictionary that maps string values to string keys
ImmutableDictionary<string,string> mimeTypes = ImmutableDictionary.CreateRange(
    new KeyValuePair<string,string>[] {
        KeyValuePair.Create("txt", "text/plain"),
        KeyValuePair.Create("html", "text/html"),
        KeyValuePair.Create("htm", "text/html"),
        KeyValuePair.Create("jpg", "image/jpeg")
    });

// Query values by keys
string? val;

if (mimeTypes.TryGetValue("txt", out val)) Console.WriteLine($"txt is mapped to {val}");
else Console.WriteLine($"txt key is not found");

if (mimeTypes.TryGetValue("png", out val)) Console.WriteLine($"png is mapped to {val}");
else Console.WriteLine($"png key is not found");

// Iterate over all values in the dictionary
foreach (string key in mimeTypes.Keys)
{
    Console.WriteLine($"{key}: {mimeTypes[key]}");
}

/* Example output:
 txt is mapped to text/plain
 png key is not found
 html: text/html
 jpg: image/jpeg
 txt: text/plain
 htm: text/html
 */

This example shows how to create a new immutable dictionary by adding and removing values from the original dictionary:

// Create an immutable dictionary that maps string values to string keys
ImmutableDictionary<string, string> mimeTypes = ImmutableDictionary.CreateRange(
    new KeyValuePair<string, string>[] {
        KeyValuePair.Create("txt", "text/plain"),
        KeyValuePair.Create("html", "text/html"),
        KeyValuePair.Create("htm", "text/html"),
        KeyValuePair.Create("jpg", "image/jpeg")
    });

// Create a new dictionary by adding and removing values from the original dictionary
ImmutableDictionary<string, string> modified = mimeTypes.Remove("htm").Add("png", "image/png");

foreach (string key in modified.Keys)
{
    Console.WriteLine($"{key}: {modified[key]}");
}

/* Example output:
 png: image/png
 txt: text/plain
 html: text/html
 jpg: image/jpeg
 */

Remarks

When you manipulate an immutable dictionary a copy of the original dictionary is made, manipulations applied and a new immutable dictionary is returned.

Fields

Empty

Gets an empty immutable dictionary.

Properties

Count

Gets the number of key/value pairs in the immutable dictionary.

IsEmpty

Gets a value that indicates whether this instance of the immutable dictionary is empty.

Item[TKey]

Gets the TValue associated with the specified key.

KeyComparer

Gets the key comparer for the immutable dictionary.

Keys

Gets the keys in the immutable dictionary.

ValueComparer

Gets the value comparer used to determine whether values are equal.

Values

Gets the values in the immutable dictionary.

Methods

Add(TKey, TValue)

Adds an element with the specified key and value to the immutable dictionary.

AddRange(IEnumerable<KeyValuePair<TKey,TValue>>)

Adds the specified key/value pairs to the immutable dictionary.

Clear()

Retrieves an empty immutable dictionary that has the same ordering and key/value comparison rules as this dictionary instance.

Contains(KeyValuePair<TKey,TValue>)

Determines whether this immutable dictionary contains the specified key/value pair.

ContainsKey(TKey)

Determines whether the immutable dictionary contains an element with the specified key.

ContainsValue(TValue)

Determines whether the immutable dictionary contains an element with the specified value.

Equals(Object)

Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetEnumerator()

Returns an enumerator that iterates through the immutable dictionary.

GetHashCode()

Serves as the default hash function.

(Inherited from Object)
GetType()

Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone()

Creates a shallow copy of the current Object.

(Inherited from Object)
Remove(TKey)

Removes the element with the specified key from the immutable dictionary.

RemoveRange(IEnumerable<TKey>)

Removes the elements with the specified keys from the immutable dictionary.

SetItem(TKey, TValue)

Sets the specified key and value in the immutable dictionary, possibly overwriting an existing value for the key.

SetItems(IEnumerable<KeyValuePair<TKey,TValue>>)

Sets the specified key/value pairs in the immutable dictionary, possibly overwriting existing values for the keys.

ToBuilder()

Creates an immutable dictionary with the same contents as this dictionary that can be efficiently mutated across multiple operations by using standard mutable interfaces.

ToString()

Returns a string that represents the current object.

(Inherited from Object)
TryGetKey(TKey, TKey)

Determines whether this dictionary contains a specified key.

TryGetValue(TKey, TValue)

Gets the value associated with the specified key.

WithComparers(IEqualityComparer<TKey>, IEqualityComparer<TValue>)

Gets an instance of the immutable dictionary that uses the specified key and value comparers.

WithComparers(IEqualityComparer<TKey>)

Gets an instance of the immutable dictionary that uses the specified key comparer.

Explicit Interface Implementations

ICollection.CopyTo(Array, Int32)

Copies the elements of the dictionary to an array, starting at a particular array index.

ICollection.IsSynchronized

Gets a value indicating whether access to the ICollection is synchronized (thread safe).

ICollection.SyncRoot

Gets an object that can be used to synchronize access to the ICollection.

ICollection<KeyValuePair<TKey,TValue>>.Add(KeyValuePair<TKey,TValue>)

Adds an item to the ICollection<T>.

ICollection<KeyValuePair<TKey,TValue>>.Clear()

Removes all items from the ICollection<T>.

ICollection<KeyValuePair<TKey,TValue>>.CopyTo(KeyValuePair<TKey,TValue>[], Int32)

Copies the elements of the ICollection<T> to an Array, starting at a particular Array index.

ICollection<KeyValuePair<TKey,TValue>>.IsReadOnly

Gets a value indicating whether the ICollection<T> is read-only.

ICollection<KeyValuePair<TKey,TValue>>.Remove(KeyValuePair<TKey,TValue>)

Removes the first occurrence of a specific object from the ICollection<T>.

IDictionary.Add(Object, Object)

Adds an element with the provided key and value to the immutable dictionary object.

IDictionary.Clear()

Clears this instance.

IDictionary.Contains(Object)

Determines whether the immutable dictionary object contains an element with the specified key.

IDictionary.GetEnumerator()

Returns an IDictionaryEnumerator object for the immutable dictionary object.

IDictionary.IsFixedSize

Gets a value indicating whether the IDictionary object has a fixed size.

IDictionary.IsReadOnly

Gets a value indicating whether the ICollection<T> is read-only.

IDictionary.Item[Object]

Gets or sets the element with the specified key.

IDictionary.Keys

Gets an ICollection<T> containing the keys of the IDictionary<TKey,TValue>.

IDictionary.Remove(Object)

Removes the element with the specified key from the immutable dictionary object.

IDictionary.Values

Gets an ICollection<T> containing the values in the IDictionary<TKey,TValue>.

IDictionary<TKey,TValue>.Add(TKey, TValue)

Adds an element with the provided key and value to the immutable dictionary.

IDictionary<TKey,TValue>.Item[TKey]

Gets or sets the TValue with the specified key.

IDictionary<TKey,TValue>.Keys

Gets the keys.

IDictionary<TKey,TValue>.Remove(TKey)

Removes the element with the specified key from the generic dictionary.

IDictionary<TKey,TValue>.Values

Gets the values.

IEnumerable.GetEnumerator()

Returns an enumerator that iterates through a collection.

IEnumerable<KeyValuePair<TKey,TValue>>.GetEnumerator()

Returns an enumerator that iterates through the collection.

IImmutableDictionary<TKey,TValue>.Add(TKey, TValue)

See the IImmutableDictionary<TKey,TValue> interface.

IImmutableDictionary<TKey,TValue>.AddRange(IEnumerable<KeyValuePair<TKey,TValue>>)

See the IImmutableDictionary<TKey,TValue> interface.

IImmutableDictionary<TKey,TValue>.Clear()

Retrieves an empty dictionary that has the same ordering and key-value comparison rules as this dictionary instance.

IImmutableDictionary<TKey,TValue>.Remove(TKey)

See the IImmutableDictionary<TKey,TValue> interface.

IImmutableDictionary<TKey,TValue>.RemoveRange(IEnumerable<TKey>)

See the IImmutableDictionary<TKey,TValue> interface.

IImmutableDictionary<TKey,TValue>.SetItem(TKey, TValue)

See the IImmutableDictionary<TKey,TValue> interface.

IImmutableDictionary<TKey,TValue>.SetItems(IEnumerable<KeyValuePair<TKey,TValue>>)

Applies a given set of key-value pairs to an immutable dictionary, replacing any conflicting keys in the resulting dictionary.

Extension Methods

ToFrozenDictionary<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>)

Creates a FrozenDictionary<TKey,TValue> from an IEnumerable<T> according to specified key selector function.

ToFrozenDictionary<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>)

Creates a FrozenDictionary<TKey,TValue> from an IEnumerable<T> according to specified key selector and element selector functions.

ToFrozenSet<T>(IEnumerable<T>, IEqualityComparer<T>)

Creates a FrozenSet<T> with the specified values.

AsReadOnly<TKey,TValue>(IDictionary<TKey,TValue>)

Returns a read-only ReadOnlyDictionary<TKey,TValue> wrapper for the current dictionary.

GetValueOrDefault<TKey,TValue>(IReadOnlyDictionary<TKey,TValue>, TKey, TValue)

Tries to get the value associated with the specified key in the dictionary.

GetValueOrDefault<TKey,TValue>(IReadOnlyDictionary<TKey,TValue>, TKey)

Tries to get the value associated with the specified key in the dictionary.

Remove<TKey,TValue>(IDictionary<TKey,TValue>, TKey, TValue)

Tries to remove the value with the specified key from the dictionary.

TryAdd<TKey,TValue>(IDictionary<TKey,TValue>, TKey, TValue)

Tries to add the specified key and value to the dictionary.

ToImmutableArray<TSource>(IEnumerable<TSource>)

Creates an immutable array from the specified collection.

Contains<TKey,TValue>(IImmutableDictionary<TKey,TValue>, TKey, TValue)

Determines whether the specified immutable dictionary contains the specified key/value pair.

GetValueOrDefault<TKey,TValue>(IImmutableDictionary<TKey,TValue>, TKey, TValue)

Gets the value for a given key if a matching key exists in the dictionary.

GetValueOrDefault<TKey,TValue>(IImmutableDictionary<TKey,TValue>, TKey)

Gets the value for a given key if a matching key exists in the dictionary.

ToImmutableDictionary<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>)

Constructs an immutable dictionary based on some transformation of a sequence.

ToImmutableDictionary<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)

Constructs an immutable dictionary from an existing collection of elements, applying a transformation function to the source keys.

ToImmutableDictionary<TSource,TKey,TValue>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TValue>, IEqualityComparer<TKey>, IEqualityComparer<TValue>)

Enumerates and transforms a sequence, and produces an immutable dictionary of its contents by using the specified key and value comparers.

ToImmutableDictionary<TSource,TKey,TValue>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TValue>, IEqualityComparer<TKey>)

Enumerates and transforms a sequence, and produces an immutable dictionary of its contents by using the specified key comparer.

ToImmutableDictionary<TSource,TKey,TValue>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TValue>)

Enumerates and transforms a sequence, and produces an immutable dictionary of its contents.

ToImmutableHashSet<TSource>(IEnumerable<TSource>, IEqualityComparer<TSource>)

Enumerates a sequence, produces an immutable hash set of its contents, and uses the specified equality comparer for the set type.

ToImmutableHashSet<TSource>(IEnumerable<TSource>)

Enumerates a sequence and produces an immutable hash set of its contents.

ToImmutableList<TSource>(IEnumerable<TSource>)

Enumerates a sequence and produces an immutable list of its contents.

ToImmutableSortedDictionary<TSource,TKey,TValue>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TValue>, IComparer<TKey>, IEqualityComparer<TValue>)

Enumerates and transforms a sequence, and produces an immutable sorted dictionary of its contents by using the specified key and value comparers.

ToImmutableSortedDictionary<TSource,TKey,TValue>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TValue>, IComparer<TKey>)

Enumerates and transforms a sequence, and produces an immutable sorted dictionary of its contents by using the specified key comparer.

ToImmutableSortedDictionary<TSource,TKey,TValue>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TValue>)

Enumerates and transforms a sequence, and produces an immutable sorted dictionary of its contents.

ToImmutableSortedSet<TSource>(IEnumerable<TSource>, IComparer<TSource>)

Enumerates a sequence, produces an immutable sorted set of its contents, and uses the specified comparer.

ToImmutableSortedSet<TSource>(IEnumerable<TSource>)

Enumerates a sequence and produces an immutable sorted set of its contents.

CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption, FillErrorEventHandler)

Copies DataRow objects to the specified DataTable, given an input IEnumerable<T> object where the generic parameter T is DataRow.

CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption)

Copies DataRow objects to the specified DataTable, given an input IEnumerable<T> object where the generic parameter T is DataRow.

CopyToDataTable<T>(IEnumerable<T>)

Returns a DataTable that contains copies of the DataRow objects, given an input IEnumerable<T> object where the generic parameter T is DataRow.

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.

AggregateBy<TSource,TKey,TAccumulate>(IEnumerable<TSource>, Func<TSource, TKey>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, IEqualityComparer<TKey>)

Applies an accumulator function over a sequence, grouping results by key.

AggregateBy<TSource,TKey,TAccumulate>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TKey,TAccumulate>, Func<TAccumulate,TSource,TAccumulate>, IEqualityComparer<TKey>)

Applies an accumulator function over a sequence, grouping results by key.

All<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)

Determines whether all elements of a sequence satisfy a condition.

Any<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)

Determines whether any element of a sequence satisfies a condition.

Any<TSource>(IEnumerable<TSource>)

Determines whether a sequence contains any elements.

Append<TSource>(IEnumerable<TSource>, TSource)

Appends a value to the end of the sequence.

AsEnumerable<TSource>(IEnumerable<TSource>)

Returns the input typed as IEnumerable<T>.

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>(IEnumerable)

Casts the elements of an IEnumerable to the specified type.

Chunk<TSource>(IEnumerable<TSource>, Int32)

Splits the elements of a sequence into chunks of size at most size.

Concat<TSource>(IEnumerable<TSource>, IEnumerable<TSource>)

Concatenates two sequences.

Contains<TSource>(IEnumerable<TSource>, TSource, IEqualityComparer<TSource>)

Determines whether a sequence contains a specified element by using a specified IEqualityComparer<T>.

Contains<TSource>(IEnumerable<TSource>, TSource)

Determines whether a sequence contains a specified element by using the default equality comparer.

Count<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)

Returns a number that represents how many elements in the specified sequence satisfy a condition.

Count<TSource>(IEnumerable<TSource>)

Returns the number of elements in a sequence.

CountBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>)

Returns the count of elements in the source sequence grouped by key.

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.

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.

Distinct<TSource>(IEnumerable<TSource>, IEqualityComparer<TSource>)

Returns distinct elements from a sequence by using a specified IEqualityComparer<T> to compare values.

Distinct<TSource>(IEnumerable<TSource>)

Returns distinct elements from a sequence by using the default equality comparer to compare values.

DistinctBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>)

Returns distinct elements from a sequence according to a specified key selector function and using a specified comparer to compare keys.

DistinctBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)

Returns distinct elements from a sequence according to a specified key selector function.

ElementAt<TSource>(IEnumerable<TSource>, Index)

Returns the element at a specified index in a sequence.

ElementAt<TSource>(IEnumerable<TSource>, Int32)

Returns the element at a specified index in a sequence.

ElementAtOrDefault<TSource>(IEnumerable<TSource>, Index)

Returns the element at a specified index in a sequence or a default value if the index is out of range.

ElementAtOrDefault<TSource>(IEnumerable<TSource>, Int32)

Returns the element at a specified index in a sequence or a default value if the index is out of range.

Except<TSource>(IEnumerable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>)

Produces the set difference of two sequences by using the specified IEqualityComparer<T> to compare values.

Except<TSource>(IEnumerable<TSource>, IEnumerable<TSource>)

Produces the set difference of two sequences by using the default equality comparer to compare values.

ExceptBy<TSource,TKey>(IEnumerable<TSource>, IEnumerable<TKey>, Func<TSource,TKey>, IEqualityComparer<TKey>)

Produces the set difference of two sequences according to a specified key selector function.

ExceptBy<TSource,TKey>(IEnumerable<TSource>, IEnumerable<TKey>, Func<TSource,TKey>)

Produces the set difference of two sequences according to a specified key selector function.

First<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)

Returns the first element in a sequence that satisfies a specified condition.

First<TSource>(IEnumerable<TSource>)

Returns the first element of a sequence.

FirstOrDefault<TSource>(IEnumerable<TSource>, TSource)

Returns the first element of a sequence, or a specified default value if the sequence contains no elements.

FirstOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>, TSource)

Returns the first element of the sequence that satisfies a condition, or a specified default value if no such element is found.

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.

FirstOrDefault<TSource>(IEnumerable<TSource>)

Returns the first element of a sequence, or a default value if the sequence contains no elements.

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>(IEnumerable<TSource>, Func<TSource,TKey>)

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

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,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>, 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,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,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.

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.

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.

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.

Index<TSource>(IEnumerable<TSource>)

Returns an enumerable that incorporates the element's index into a tuple.

Intersect<TSource>(IEnumerable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>)

Produces the set intersection of two sequences by using the specified IEqualityComparer<T> to compare values.

Intersect<TSource>(IEnumerable<TSource>, IEnumerable<TSource>)

Produces the set intersection of two sequences by using the default equality comparer to compare values.

IntersectBy<TSource,TKey>(IEnumerable<TSource>, IEnumerable<TKey>, Func<TSource,TKey>, IEqualityComparer<TKey>)

Produces the set intersection of two sequences according to a specified key selector function.

IntersectBy<TSource,TKey>(IEnumerable<TSource>, IEnumerable<TKey>, Func<TSource,TKey>)

Produces the set intersection of two sequences according to a specified key selector function.

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.

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.

Last<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)

Returns the last element of a sequence that satisfies a specified condition.

Last<TSource>(IEnumerable<TSource>)

Returns the last element of a sequence.

LastOrDefault<TSource>(IEnumerable<TSource>, TSource)

Returns the last element of a sequence, or a specified default value if the sequence contains no elements.

LastOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>, TSource)

Returns the last element of a sequence that satisfies a condition, or a specified default value if no such element is found.

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.

LastOrDefault<TSource>(IEnumerable<TSource>)

Returns the last element of a sequence, or a default value if the sequence contains no elements.

LongCount<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)

Returns an Int64 that represents how many elements in a sequence satisfy a condition.

LongCount<TSource>(IEnumerable<TSource>)

Returns an Int64 that represents the total number of elements in a sequence.

Max<TSource>(IEnumerable<TSource>, IComparer<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>(IEnumerable<TSource>)

Returns the maximum value in a generic sequence.

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.

MaxBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>)

Returns the maximum value in a generic sequence according to a specified key selector function and key comparer.

MaxBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)

Returns the maximum value in a generic sequence according to a specified key selector function.

Min<TSource>(IEnumerable<TSource>, IComparer<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>(IEnumerable<TSource>)

Returns the minimum value in a generic sequence.

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.

MinBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>)

Returns the minimum value in a generic sequence according to a specified key selector function and key comparer.

MinBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)

Returns the minimum value in a generic sequence according to a specified key selector function.

OfType<TResult>(IEnumerable)

Filters the elements of an IEnumerable based on a specified type.

Order<T>(IEnumerable<T>, IComparer<T>)

Sorts the elements of a sequence in ascending order.

Order<T>(IEnumerable<T>)

Sorts the elements of a sequence in ascending order.

OrderBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>)

Sorts the elements of a sequence in ascending order by using a specified comparer.

OrderBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)

Sorts the elements of a sequence in ascending 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.

OrderByDescending<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)

Sorts the elements of a sequence in descending order according to a key.

OrderDescending<T>(IEnumerable<T>, IComparer<T>)

Sorts the elements of a sequence in descending order.

OrderDescending<T>(IEnumerable<T>)

Sorts the elements of a sequence in descending order.

Prepend<TSource>(IEnumerable<TSource>, TSource)

Adds a value to the beginning of the sequence.

Reverse<TSource>(IEnumerable<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>, IEqualityComparer<TSource>)

Determines whether two sequences are equal by comparing their elements by using a specified IEqualityComparer<T>.

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.

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.

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.

SingleOrDefault<TSource>(IEnumerable<TSource>, TSource)

Returns the only element of a sequence, or a specified 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>, TSource)

Returns the only element of a sequence that satisfies a specified condition, or a specified default value if no such element exists; this method throws an exception if more than one element satisfies the condition.

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.

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.

Skip<TSource>(IEnumerable<TSource>, Int32)

Bypasses a specified number of elements in a sequence and then returns the remaining elements.

SkipLast<TSource>(IEnumerable<TSource>, Int32)

Returns a new enumerable collection that contains the elements from source with the last count elements of the source collection omitted.

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<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>(IEnumerable<TSource>, Int32)

Returns a specified number of contiguous elements from the start of a sequence.

Take<TSource>(IEnumerable<TSource>, Range)

Returns a specified range of contiguous elements from a sequence.

TakeLast<TSource>(IEnumerable<TSource>, Int32)

Returns a new enumerable collection that contains the last count elements from source.

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.

ToArray<TSource>(IEnumerable<TSource>)

Creates an array from a IEnumerable<T>.

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>(IEnumerable<TSource>, Func<TSource,TKey>)

Creates a Dictionary<TKey,TValue> from an IEnumerable<T> according to a specified key selector function.

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.

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.

ToHashSet<TSource>(IEnumerable<TSource>, IEqualityComparer<TSource>)

Creates a HashSet<T> from an IEnumerable<T> using the comparer to compare keys.

ToHashSet<TSource>(IEnumerable<TSource>)

Creates a HashSet<T> from an IEnumerable<T>.

ToList<TSource>(IEnumerable<TSource>)

Creates a List<T> from an IEnumerable<T>.

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>(IEnumerable<TSource>, Func<TSource,TKey>)

Creates a Lookup<TKey,TElement> from an IEnumerable<T> according to a specified key selector function.

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.

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.

TryGetNonEnumeratedCount<TSource>(IEnumerable<TSource>, Int32)

Attempts to determine the number of elements in a sequence without forcing an enumeration.

Union<TSource>(IEnumerable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>)

Produces the set union of two sequences by using a specified IEqualityComparer<T>.

Union<TSource>(IEnumerable<TSource>, IEnumerable<TSource>)

Produces the set union of two sequences by using the default equality comparer.

UnionBy<TSource,TKey>(IEnumerable<TSource>, IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>)

Produces the set union of two sequences according to a specified key selector function.

UnionBy<TSource,TKey>(IEnumerable<TSource>, IEnumerable<TSource>, Func<TSource,TKey>)

Produces the set union of two sequences according to a specified key selector function.

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>(IEnumerable<TFirst>, IEnumerable<TSecond>)

Produces a sequence of tuples with elements from the two specified sequences.

Zip<TFirst,TSecond,TThird>(IEnumerable<TFirst>, IEnumerable<TSecond>, IEnumerable<TThird>)

Produces a sequence of tuples with elements from the three specified sequences.

Zip<TFirst,TSecond,TResult>(IEnumerable<TFirst>, IEnumerable<TSecond>, Func<TFirst,TSecond,TResult>)

Applies a specified function to the corresponding elements of two sequences, producing a sequence of the results.

AsParallel(IEnumerable)

Enables parallelization of a query.

AsParallel<TSource>(IEnumerable<TSource>)

Enables parallelization of a query.

AsQueryable(IEnumerable)

Converts an IEnumerable to an IQueryable.

AsQueryable<TElement>(IEnumerable<TElement>)

Converts a generic IEnumerable<T> to a generic IQueryable<T>.

Ancestors<T>(IEnumerable<T>, XName)

Returns a filtered collection of elements that contains the ancestors of every node in the source collection. Only elements that have a matching XName are included in the collection.

Ancestors<T>(IEnumerable<T>)

Returns a collection of elements that contains the ancestors of every node in the source collection.

DescendantNodes<T>(IEnumerable<T>)

Returns a collection of the descendant nodes of every document and element in the source collection.

Descendants<T>(IEnumerable<T>, XName)

Returns a filtered collection of elements that contains the descendant elements of every element and document in the source collection. Only elements that have a matching XName are included in the collection.

Descendants<T>(IEnumerable<T>)

Returns a collection of elements that contains the descendant elements of every element and document in the source collection.

Elements<T>(IEnumerable<T>, XName)

Returns a filtered collection of the child elements of every element and document in the source collection. Only elements that have a matching XName are included in the collection.

Elements<T>(IEnumerable<T>)

Returns a collection of the child elements of every element and document in the source collection.

InDocumentOrder<T>(IEnumerable<T>)

Returns a collection of nodes that contains all nodes in the source collection, sorted in document order.

Nodes<T>(IEnumerable<T>)

Returns a collection of the child nodes of every document and element in the source collection.

Remove<T>(IEnumerable<T>)

Removes every node in the source collection from its parent node.

Applies to

Thread Safety

This type is thread safe.