IProducerConsumerCollection<T> Interface
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Defines methods to manipulate thread-safe collections intended for producer/consumer usage. This interface provides a unified representation for producer/consumer collections so that higher level abstractions such as BlockingCollection<T> can use the collection as the underlying storage mechanism.
generic <typename T>
public interface class IProducerConsumerCollection : System::Collections::Generic::IEnumerable<T>, System::Collections::ICollection
public interface IProducerConsumerCollection<T> : System.Collections.Generic.IEnumerable<T>, System.Collections.ICollection
type IProducerConsumerCollection<'T> = interface
interface seq<'T>
interface IEnumerable
interface ICollection
type IProducerConsumerCollection<'T> = interface
interface seq<'T>
interface ICollection
interface IEnumerable
Public Interface IProducerConsumerCollection(Of T)
Implements ICollection, IEnumerable(Of T)
Type Parameters
- T
Specifies the type of elements in the collection.
- Derived
- Implements
Examples
The following example shows a stack data structure that implements System.Collections.Concurrent.IProducerConsumerCollection<T>.
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.Concurrent;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
// Sample implementation of IProducerConsumerCollection(T)
// -- in this case, a thread-safe stack.
public class SafeStack<T> : IProducerConsumerCollection<T>
{
// Used for enforcing thread-safety
private object m_lockObject = new object();
// We'll use a regular old Stack for our core operations
private Stack<T> m_sequentialStack = null;
//
// Constructors
//
public SafeStack()
{
m_sequentialStack = new Stack<T>();
}
public SafeStack(IEnumerable<T> collection)
{
m_sequentialStack = new Stack<T>(collection);
}
//
// Safe Push/Pop support
//
public void Push(T item)
{
lock (m_lockObject) m_sequentialStack.Push(item);
}
public bool TryPop(out T item)
{
bool rval = true;
lock (m_lockObject)
{
if (m_sequentialStack.Count == 0) { item = default(T); rval = false; }
else
{
item = m_sequentialStack.Pop();
}
}
return rval;
}
//
// IProducerConsumerCollection(T) support
//
public bool TryTake(out T item)
{
return TryPop(out item);
}
public bool TryAdd(T item)
{
Push(item);
return true; // Push doesn't fail
}
public T[] ToArray()
{
T[] rval = null;
lock (m_lockObject) rval = m_sequentialStack.ToArray();
return rval;
}
public void CopyTo(T[] array, int index)
{
lock (m_lockObject) m_sequentialStack.CopyTo(array, index);
}
//
// Support for IEnumerable(T)
//
public IEnumerator<T> GetEnumerator()
{
// The performance here will be unfortunate for large stacks,
// but thread-safety is effectively implemented.
Stack<T> stackCopy = null;
lock (m_lockObject) stackCopy = new Stack<T>(m_sequentialStack);
return stackCopy.GetEnumerator();
}
//
// Support for IEnumerable
//
IEnumerator IEnumerable.GetEnumerator()
{
return ((IEnumerable<T>)this).GetEnumerator();
}
//
// Support for ICollection
//
public bool IsSynchronized
{
get { return true; }
}
public object SyncRoot
{
get { return m_lockObject; }
}
public int Count
{
get { return m_sequentialStack.Count; }
}
public void CopyTo(Array array, int index)
{
lock (m_lockObject) ((ICollection)m_sequentialStack).CopyTo(array, index);
}
}
public class Program
{
static void Main()
{
TestSafeStack();
// Keep the console window open in debug mode.
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
// Test our implementation of IProducerConsumerCollection(T)
// Demonstrates:
// IPCC(T).TryAdd()
// IPCC(T).TryTake()
// IPCC(T).CopyTo()
static void TestSafeStack()
{
SafeStack<int> stack = new SafeStack<int>();
IProducerConsumerCollection<int> ipcc = (IProducerConsumerCollection<int>)stack;
// Test Push()/TryAdd()
stack.Push(10); Console.WriteLine("Pushed 10");
ipcc.TryAdd(20); Console.WriteLine("IPCC.TryAdded 20");
stack.Push(15); Console.WriteLine("Pushed 15");
int[] testArray = new int[3];
// Try CopyTo() within boundaries
try
{
ipcc.CopyTo(testArray, 0);
Console.WriteLine("CopyTo() within boundaries worked, as expected");
}
catch (Exception e)
{
Console.WriteLine("CopyTo() within boundaries unexpectedly threw an exception: {0}", e.Message);
}
// Try CopyTo() that overflows
try
{
ipcc.CopyTo(testArray, 1);
Console.WriteLine("CopyTo() with index overflow worked, and it SHOULD NOT HAVE");
}
catch (Exception e)
{
Console.WriteLine("CopyTo() with index overflow threw an exception, as expected: {0}", e.Message);
}
// Test enumeration
Console.Write("Enumeration (should be three items): ");
foreach (int item in stack) Console.Write("{0} ", item);
Console.WriteLine("");
// Test TryPop()
int popped = 0;
if (stack.TryPop(out popped))
{
Console.WriteLine("Successfully popped {0}", popped);
}
else
{
Console.WriteLine("FAILED to pop!!");
}
// Test Count
Console.WriteLine("stack count is {0}, should be 2", stack.Count);
// Test TryTake()
if (ipcc.TryTake(out popped))
{
Console.WriteLine("Successfully IPCC-TryTaked {0}", popped);
}
else
{
Console.WriteLine("FAILED to IPCC.TryTake!!");
}
}
}
Imports System.Collections.Concurrent
Module IProdCon
' Sample implementation of IProducerConsumerCollection(T) -- in this case,
' a thread-safe stack.
Public Class SafeStack(Of T)
Implements IProducerConsumerCollection(Of T)
' Used for enforcing thread-safety
Private m_lockObject As New Object()
' We'll use a regular old Stack for our core operations
Private m_sequentialStack As Stack(Of T) = Nothing
'
' Constructors
'
Public Sub New()
m_sequentialStack = New Stack(Of T)()
End Sub
Public Sub New(ByVal collection As IEnumerable(Of T))
m_sequentialStack = New Stack(Of T)(collection)
End Sub
'
' Safe Push/Pop support
'
Public Sub Push(ByVal item As T)
SyncLock m_lockObject
m_sequentialStack.Push(item)
End SyncLock
End Sub
Public Function TryPop(ByRef item As T) As Boolean
Dim rval As Boolean = True
SyncLock m_lockObject
If m_sequentialStack.Count = 0 Then
item = Nothing
rval = False
Else
item = m_sequentialStack.Pop()
End If
End SyncLock
Return rval
End Function
'
' IProducerConsumerCollection(T) support
'
Public Function TryTake(ByRef item As T) As Boolean Implements IProducerConsumerCollection(Of T).TryTake
Return TryPop(item)
End Function
Public Function TryAdd(ByVal item As T) As Boolean Implements IProducerConsumerCollection(Of T).TryAdd
Push(item)
' Push doesn't fail
Return True
End Function
Public Function ToArray() As T() Implements IProducerConsumerCollection(Of T).ToArray
Dim rval As T() = Nothing
SyncLock m_lockObject
rval = m_sequentialStack.ToArray()
End SyncLock
Return rval
End Function
Public Sub CopyTo(ByVal array As T(), ByVal index As Integer) Implements IProducerConsumerCollection(Of T).CopyTo
SyncLock m_lockObject
m_sequentialStack.CopyTo(array, index)
End SyncLock
End Sub
'
' Support for IEnumerable(T)
'
Public Function GetEnumerator() As IEnumerator(Of T) Implements IEnumerable(Of T).GetEnumerator
' The performance here will be unfortunate for large stacks,
' but thread-safety is effectively implemented.
Dim stackCopy As Stack(Of T) = Nothing
SyncLock m_lockObject
stackCopy = New Stack(Of T)(m_sequentialStack)
End SyncLock
Return stackCopy.GetEnumerator()
End Function
'
' Support for IEnumerable
'
Private Function GetEnumerator2() As IEnumerator Implements IEnumerable.GetEnumerator
Return DirectCast(Me, IEnumerable(Of T)).GetEnumerator()
End Function
'
' Support for ICollection
'
Public ReadOnly Property IsSynchronized() As Boolean Implements ICollection.IsSynchronized
Get
Return True
End Get
End Property
Public ReadOnly Property SyncRoot() As Object Implements ICollection.SyncRoot
Get
Return m_lockObject
End Get
End Property
Public ReadOnly Property Count() As Integer Implements ICollection.Count
Get
Return m_sequentialStack.Count
End Get
End Property
Public Sub CopyTo(ByVal array As Array, ByVal index As Integer) Implements ICollection.CopyTo
SyncLock m_lockObject
DirectCast(m_sequentialStack, ICollection).CopyTo(array, index)
End SyncLock
End Sub
End Class
' Test our implementation of IProducerConsumerCollection(T)
' Demonstrates:
' IPCC(T).TryAdd()
' IPCC(T).TryTake()
' IPCC(T).CopyTo()
Private Sub TestSafeStack()
Dim stack As New SafeStack(Of Integer)()
Dim ipcc As IProducerConsumerCollection(Of Integer) = DirectCast(stack, IProducerConsumerCollection(Of Integer))
' Test Push()/TryAdd()
stack.Push(10)
Console.WriteLine("Pushed 10")
ipcc.TryAdd(20)
Console.WriteLine("IPCC.TryAdded 20")
stack.Push(15)
Console.WriteLine("Pushed 15")
Dim testArray As Integer() = New Integer(2) {}
' Try CopyTo() within boundaries
Try
ipcc.CopyTo(testArray, 0)
Console.WriteLine("CopyTo() within boundaries worked, as expected")
Catch e As Exception
Console.WriteLine("CopyTo() within boundaries unexpectedly threw an exception: {0}", e.Message)
End Try
' Try CopyTo() that overflows
Try
ipcc.CopyTo(testArray, 1)
Console.WriteLine("CopyTo() with index overflow worked, and it SHOULD NOT HAVE")
Catch e As Exception
Console.WriteLine("CopyTo() with index overflow threw an exception, as expected: {0}", e.Message)
End Try
' Test enumeration
Console.Write("Enumeration (should be three items): ")
For Each item As Integer In stack
Console.Write("{0} ", item)
Next
Console.WriteLine("")
' Test TryPop()
Dim popped As Integer = 0
If stack.TryPop(popped) Then
Console.WriteLine("Successfully popped {0}", popped)
Else
Console.WriteLine("FAILED to pop!!")
End If
' Test Count
Console.WriteLine("stack count is {0}, should be 2", stack.Count)
' Test TryTake()
If ipcc.TryTake(popped) Then
Console.WriteLine("Successfully IPCC-TryTaked {0}", popped)
Else
Console.WriteLine("FAILED to IPCC.TryTake!!")
End If
End Sub
Sub Main()
TestSafeStack()
' Keep the console window open in debug mode
Console.WriteLine("Press any key to exit.")
Console.ReadKey()
End Sub
End Module
Remarks
For more information, see Thread-Safe Collections and BlockingCollection Overview.
Properties
Count |
Gets the number of elements contained in the ICollection. (Inherited from ICollection) |
IsSynchronized |
Gets a value indicating whether access to the ICollection is synchronized (thread safe). (Inherited from ICollection) |
SyncRoot |
Gets an object that can be used to synchronize access to the ICollection. (Inherited from ICollection) |
Methods
CopyTo(Array, Int32) |
Copies the elements of the ICollection to an Array, starting at a particular Array index. (Inherited from ICollection) |
CopyTo(T[], Int32) |
Copies the elements of the IProducerConsumerCollection<T> to an Array, starting at a specified index. |
GetEnumerator() |
Returns an enumerator that iterates through a collection. (Inherited from IEnumerable) |
ToArray() |
Copies the elements contained in the IProducerConsumerCollection<T> to a new array. |
TryAdd(T) |
Attempts to add an object to the IProducerConsumerCollection<T>. |
TryTake(T) |
Attempts to remove and return an object from the IProducerConsumerCollection<T>. |
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. |
ToImmutableArray<TSource>(IEnumerable<TSource>) |
Creates an immutable array from the specified collection. |
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>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>) |
Constructs an immutable dictionary based on some transformation of a sequence. |
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. |
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>, 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. |
ToImmutableHashSet<TSource>(IEnumerable<TSource>) |
Enumerates a sequence and produces an immutable hash set 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. |
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>) |
Enumerates and transforms a sequence, and produces an immutable sorted dictionary of its contents. |
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>, 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. |
ToImmutableSortedSet<TSource>(IEnumerable<TSource>) |
Enumerates a sequence and produces an immutable sorted set 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. |
CopyToDataTable<T>(IEnumerable<T>) |
Returns a DataTable that contains copies of the DataRow objects, given an input IEnumerable<T> object where the generic parameter |
CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption) |
Copies DataRow objects to the specified DataTable, given an input IEnumerable<T> object where the generic parameter |
CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption, FillErrorEventHandler) |
Copies DataRow objects to the specified DataTable, given an input IEnumerable<T> object where the generic parameter |
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>) | |
AggregateBy<TSource,TKey,TAccumulate>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TKey,TAccumulate>, Func<TAccumulate,TSource,TAccumulate>, IEqualityComparer<TKey>) | |
All<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) |
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. |
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 |
Concat<TSource>(IEnumerable<TSource>, IEnumerable<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. |
CountBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>) | |
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. |
DistinctBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>) |
Returns distinct elements from a sequence according to a specified key selector function. |
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. |
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>) |
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. |
ExceptBy<TSource,TKey>(IEnumerable<TSource>, IEnumerable<TKey>, Func<TSource,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>, IEqualityComparer<TKey>) |
Produces the set difference of two sequences according to a specified key selector function. |
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>, 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>) |
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>, 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. |
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,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>) |
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,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. |
Index<TSource>(IEnumerable<TSource>) |
Returns an enumerable that incorporates the element's index into a tuple. |
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. |
IntersectBy<TSource,TKey>(IEnumerable<TSource>, IEnumerable<TKey>, Func<TSource,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>, IEqualityComparer<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>) |
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>, 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>) |
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>, 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. |
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<TSource>(IEnumerable<TSource>) |
Returns the maximum value in a generic 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,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>) |
Returns the maximum value in a generic sequence according to a specified key selector function. |
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. |
Min<TSource>(IEnumerable<TSource>) |
Returns the minimum value in a generic sequence. |
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,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>) |
Returns the minimum value in a generic sequence according to a specified key selector function. |
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. |
OfType<TResult>(IEnumerable) |
Filters the elements of an IEnumerable based on a specified type. |
Order<T>(IEnumerable<T>) |
Sorts the elements of a sequence in ascending order. |
Order<T>(IEnumerable<T>, IComparer<T>) |
Sorts the elements of a sequence in ascending order. |
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. |
OrderDescending<T>(IEnumerable<T>) |
Sorts the elements of a sequence in descending order. |
OrderDescending<T>(IEnumerable<T>, IComparer<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>) |
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>, 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>) |
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>, 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. |
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 |
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 |
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>) |
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. |
ToHashSet<TSource>(IEnumerable<TSource>) |
Creates a HashSet<T> from an IEnumerable<T>. |
ToHashSet<TSource>(IEnumerable<TSource>, IEqualityComparer<TSource>) |
Creates a HashSet<T> from an IEnumerable<T> using the |
ToList<TSource>(IEnumerable<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. |
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>) |
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>. |
UnionBy<TSource,TKey>(IEnumerable<TSource>, IEnumerable<TSource>, Func<TSource,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>, IEqualityComparer<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>) |
Returns a collection of elements that contains the ancestors of every node in the source collection. |
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. |
DescendantNodes<T>(IEnumerable<T>) |
Returns a collection of the descendant nodes of every document and element in the source collection. |
Descendants<T>(IEnumerable<T>) |
Returns a collection of elements that contains the descendant elements of every element and document 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. |
Elements<T>(IEnumerable<T>) |
Returns a collection of the child 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. |
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
All implementations of this interface must enable all members of this interface to be used concurrently from multiple threads.
See also
Feedback
https://aka.ms/ContentUserFeedback.
Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see:Submit and view feedback for