BlockingCollection<T> Classe

Definizione

Fornisce funzionalità di blocco e limitazione per le raccolte thread-safe che implementano IProducerConsumerCollection<T>.

generic <typename T>
public ref class BlockingCollection : IDisposable, System::Collections::Generic::IEnumerable<T>, System::Collections::Generic::IReadOnlyCollection<T>, System::Collections::ICollection
generic <typename T>
public ref class BlockingCollection : IDisposable, System::Collections::Generic::IEnumerable<T>, System::Collections::ICollection
public class BlockingCollection<T> : IDisposable, System.Collections.Generic.IEnumerable<T>, System.Collections.Generic.IReadOnlyCollection<T>, System.Collections.ICollection
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public class BlockingCollection<T> : IDisposable, System.Collections.Generic.IEnumerable<T>, System.Collections.Generic.IReadOnlyCollection<T>, System.Collections.ICollection
[System.Runtime.InteropServices.ComVisible(false)]
public class BlockingCollection<T> : IDisposable, System.Collections.Generic.IEnumerable<T>, System.Collections.ICollection
[System.Runtime.InteropServices.ComVisible(false)]
public class BlockingCollection<T> : IDisposable, System.Collections.Generic.IEnumerable<T>, System.Collections.Generic.IReadOnlyCollection<T>, System.Collections.ICollection
public class BlockingCollection<T> : IDisposable, System.Collections.Generic.IEnumerable<T>, System.Collections.ICollection
type BlockingCollection<'T> = class
    interface seq<'T>
    interface IEnumerable
    interface IReadOnlyCollection<'T>
    interface ICollection
    interface IDisposable
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
type BlockingCollection<'T> = class
    interface seq<'T>
    interface IEnumerable
    interface IReadOnlyCollection<'T>
    interface ICollection
    interface IDisposable
[<System.Runtime.InteropServices.ComVisible(false)>]
type BlockingCollection<'T> = class
    interface seq<'T>
    interface ICollection
    interface IEnumerable
    interface IDisposable
[<System.Runtime.InteropServices.ComVisible(false)>]
type BlockingCollection<'T> = class
    interface seq<'T>
    interface IEnumerable
    interface ICollection
    interface IDisposable
    interface IReadOnlyCollection<'T>
type BlockingCollection<'T> = class
    interface seq<'T>
    interface ICollection
    interface IEnumerable
    interface IDisposable
Public Class BlockingCollection(Of T)
Implements ICollection, IDisposable, IEnumerable(Of T), IReadOnlyCollection(Of T)
Public Class BlockingCollection(Of T)
Implements ICollection, IDisposable, IEnumerable(Of T)

Parametri di tipo

T

Tipo di elementi contenuti nella raccolta.

Ereditarietà
BlockingCollection<T>
Attributi
Implementazioni

Esempio

Nell'esempio seguente viene illustrato come aggiungere e accettare gli elementi simultaneamente da una raccolta di blocco:

using System;
using System.Collections.Concurrent;
using System.Threading;
using System.Threading.Tasks;

class BlockingCollectionDemo
{
    static async Task Main()
    {
        await AddTakeDemo.BC_AddTakeCompleteAdding();
        TryTakeDemo.BC_TryTake();
        FromToAnyDemo.BC_FromToAny();
        await ConsumingEnumerableDemo.BC_GetConsumingEnumerable();
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }
}
class AddTakeDemo
{
    // Demonstrates:
    //      BlockingCollection<T>.Add()
    //      BlockingCollection<T>.Take()
    //      BlockingCollection<T>.CompleteAdding()
    public static async Task BC_AddTakeCompleteAdding()
    {
        using (BlockingCollection<int> bc = new BlockingCollection<int>())
        {
            // Spin up a Task to populate the BlockingCollection
            Task t1 = Task.Run(() =>
            {
                bc.Add(1);
                bc.Add(2);
                bc.Add(3);
                bc.CompleteAdding();
            });

            // Spin up a Task to consume the BlockingCollection
            Task t2 = Task.Run(() =>
            {
                try
                {
                    // Consume the BlockingCollection
                    while (true) Console.WriteLine(bc.Take());
                }
                catch (InvalidOperationException)
                {
                    // An InvalidOperationException means that Take() was called on a completed collection
                    Console.WriteLine("That's All!");
                }
            });

            await Task.WhenAll(t1, t2);
        }
    }
}

class TryTakeDemo
{
    // Demonstrates:
    //      BlockingCollection<T>.Add()
    //      BlockingCollection<T>.CompleteAdding()
    //      BlockingCollection<T>.TryTake()
    //      BlockingCollection<T>.IsCompleted
    public static void BC_TryTake()
    {
        // Construct and fill our BlockingCollection
        using (BlockingCollection<int> bc = new BlockingCollection<int>())
        {
            int NUMITEMS = 10000;
            for (int i = 0; i < NUMITEMS; i++) bc.Add(i);
            bc.CompleteAdding();
            int outerSum = 0;

            // Delegate for consuming the BlockingCollection and adding up all items
            Action action = () =>
            {
                int localItem;
                int localSum = 0;

                while (bc.TryTake(out localItem)) localSum += localItem;
                Interlocked.Add(ref outerSum, localSum);
            };

            // Launch three parallel actions to consume the BlockingCollection
            Parallel.Invoke(action, action, action);

            Console.WriteLine("Sum[0..{0}) = {1}, should be {2}", NUMITEMS, outerSum, ((NUMITEMS * (NUMITEMS - 1)) / 2));
            Console.WriteLine("bc.IsCompleted = {0} (should be true)", bc.IsCompleted);
        }
    }
}

class FromToAnyDemo
{
    // Demonstrates:
    //      Bounded BlockingCollection<T>
    //      BlockingCollection<T>.TryAddToAny()
    //      BlockingCollection<T>.TryTakeFromAny()
    public static void BC_FromToAny()
    {
        BlockingCollection<int>[] bcs = new BlockingCollection<int>[2];
        bcs[0] = new BlockingCollection<int>(5); // collection bounded to 5 items
        bcs[1] = new BlockingCollection<int>(5); // collection bounded to 5 items

        // Should be able to add 10 items w/o blocking
        int numFailures = 0;
        for (int i = 0; i < 10; i++)
        {
            if (BlockingCollection<int>.TryAddToAny(bcs, i) == -1) numFailures++;
        }
        Console.WriteLine("TryAddToAny: {0} failures (should be 0)", numFailures);

        // Should be able to retrieve 10 items
        int numItems = 0;
        int item;
        while (BlockingCollection<int>.TryTakeFromAny(bcs, out item) != -1) numItems++;
        Console.WriteLine("TryTakeFromAny: retrieved {0} items (should be 10)", numItems);
    }
}

class ConsumingEnumerableDemo
{
    // Demonstrates:
    //      BlockingCollection<T>.Add()
    //      BlockingCollection<T>.CompleteAdding()
    //      BlockingCollection<T>.GetConsumingEnumerable()
    public static async Task BC_GetConsumingEnumerable()
    {
        using (BlockingCollection<int> bc = new BlockingCollection<int>())
        {
            // Kick off a producer task
            var producerTask = Task.Run(async () =>
            {
                for (int i = 0; i < 10; i++)
                {
                    bc.Add(i);
                    Console.WriteLine($"Producing: {i}");

                    await Task.Delay(100); // sleep 100 ms between adds
                }

                // Need to do this to keep foreach below from hanging
                bc.CompleteAdding();
            });

            // Now consume the blocking collection with foreach.
            // Use bc.GetConsumingEnumerable() instead of just bc because the
            // former will block waiting for completion and the latter will
            // simply take a snapshot of the current state of the underlying collection.
            foreach (var item in bc.GetConsumingEnumerable())
            {
                Console.WriteLine($"Consuming: {item}");
            }
            await producerTask; // Allow task to complete cleanup
        }
    }
}
open System
open System.Collections.Concurrent
open System.Threading
open System.Threading.Tasks

module AddTakeDemo =
    // Demonstrates:
    //      BlockingCollection<T>.Add()
    //      BlockingCollection<T>.Take()
    //      BlockingCollection<T>.CompleteAdding()
    let blockingCollectionAddTakeCompleteAdding () =
        task {
            use bc = new BlockingCollection<int>()
            // Spin up a Task to populate the BlockingCollection
            let t1 = 
                task {
                    bc.Add 1
                    bc.Add 2
                    bc.Add 3
                    bc.CompleteAdding()
                }

            // Spin up a Task to consume the BlockingCollection
            let t2 = 
                task {
                    try
                        // Consume consume the BlockingCollection
                        while true do 
                            printfn $"{bc.Take()}"
                    with :? InvalidOperationException ->
                        // An InvalidOperationException means that Take() was called on a completed collection
                        printfn "That's All!"
                }
            let! _ = Task.WhenAll(t1, t2)
            ()
        }

module TryTakeDemo =
    // Demonstrates:
    //      BlockingCollection<T>.Add()
    //      BlockingCollection<T>.CompleteAdding()
    //      BlockingCollection<T>.TryTake()
    //      BlockingCollection<T>.IsCompleted
    let blockingCollectionTryTake () =
        // Construct and fill our BlockingCollection
        use bc = new BlockingCollection<int>()
        let NUMITEMS = 10000;
        for i = 0 to NUMITEMS - 1 do
            bc.Add i
        bc.CompleteAdding()
        let mutable outerSum = 0

        // Delegate for consuming the BlockingCollection and adding up all items
        let action = 
            Action(fun () ->
                let mutable localItem = 0
                let mutable localSum = 0

                while bc.TryTake &localItem do
                    localSum <- localSum + localItem
                Interlocked.Add(&outerSum, localSum)
                |> ignore)

        // Launch three parallel actions to consume the BlockingCollection
        Parallel.Invoke(action, action, action)

        printfn $"Sum[0..{NUMITEMS}) = {outerSum}, should be {((NUMITEMS * (NUMITEMS - 1)) / 2)}"
        printfn $"bc.IsCompleted = {bc.IsCompleted} (should be true)"

module FromToAnyDemo =
    // Demonstrates:
    //      Bounded BlockingCollection<T>
    //      BlockingCollection<T>.TryAddToAny()
    //      BlockingCollection<T>.TryTakeFromAny()
    let blockingCollectionFromToAny () =
        let bcs = 
            [|
                new BlockingCollection<int>(5) // collection bounded to 5 items
                new BlockingCollection<int>(5) // collection bounded to 5 items
             |]
        // Should be able to add 10 items w/o blocking
        let mutable numFailures = 0;
        for i = 0 to 9 do
            if BlockingCollection<int>.TryAddToAny(bcs, i) = -1 then
                numFailures <- numFailures + 1
        printfn $"TryAddToAny: {numFailures} failures (should be 0)"

        // Should be able to retrieve 10 items
        let mutable numItems = 0
        let mutable item = 0
        while BlockingCollection<int>.TryTakeFromAny(bcs, &item) <> -1 do
            numItems <- numItems + 1
        printfn $"TryTakeFromAny: retrieved {numItems} items (should be 10)"

module ConsumingEnumerableDemo =
    // Demonstrates:
    //      BlockingCollection<T>.Add()
    //      BlockingCollection<T>.CompleteAdding()
    //      BlockingCollection<T>.GetConsumingEnumerable()
    let blockingCollectionGetConsumingEnumerable () =
        task {
            use bc = new BlockingCollection<int>()
            // Kick off a producer task
            let producerTask =
                task {
                    for i = 0 to 9 do
                        bc.Add i
                        printfn $"Producing: {i}"

                        do! Task.Delay 100 // sleep 100 ms between adds
                    // Need to do this to keep foreach below from hanging
                    bc.CompleteAdding()
                }

            // Now consume the blocking collection with foreach.
            // Use bc.GetConsumingEnumerable() instead of just bc because the
            // former will block waiting for completion and the latter will
            // simply take a snapshot of the current state of the underlying collection.
            for item in bc.GetConsumingEnumerable() do
                printfn $"Consuming: {item}"
            do! producerTask // Allow task to complete cleanup
        }

let main =
    task {
        do! AddTakeDemo.blockingCollectionAddTakeCompleteAdding ()
        TryTakeDemo.blockingCollectionTryTake ()
        FromToAnyDemo.blockingCollectionFromToAny ()
        do! ConsumingEnumerableDemo.blockingCollectionGetConsumingEnumerable ()
        printfn "Press any key to exit."
        Console.ReadKey(true) |> ignore
    }
main.Wait()
Imports System.Threading.Tasks
Imports System.Collections.Concurrent
Imports System.Threading

Class BlockingCollectionDemo
    Shared Sub Main()
        AddTakeDemo.BC_AddTakeCompleteAdding()
        TryTakeDemo.BC_TryTake()
        ToAnyDemo.BC_ToAny()
        ConsumingEnumerableDemo.BC_GetConsumingEnumerable()
        ' Keep the console window open in debug mode
        Console.WriteLine("Press any key to exit.")
        Console.ReadKey()
    End Sub
End Class

Class AddTakeDemo

    ' Demonstrates:
    ' BlockingCollection<T>.Add()
    ' BlockingCollection<T>.Take()
    ' BlockingCollection<T>.CompleteAdding()
    Shared Sub BC_AddTakeCompleteAdding()
        Using bc As New BlockingCollection(Of Integer)()

            ' Spin up a Task to populate the BlockingCollection 
            Using t1 As Task = Task.Factory.StartNew(
                Sub()
                    bc.Add(1)
                    bc.Add(2)
                    bc.Add(3)
                    bc.CompleteAdding()
                End Sub)
                ' Spin up a Task to consume the BlockingCollection
                Using t2 As Task = Task.Factory.StartNew(
                Sub()
                    Try
                        ' Consume the BlockingCollection
                        While True
                            Console.WriteLine(bc.Take())
                        End While
                    Catch generatedExceptionName As InvalidOperationException
                        ' An InvalidOperationException means that Take() was called on a completed collection
                        Console.WriteLine("That's All!")
                    End Try
                End Sub)

                    Task.WaitAll(t1, t2)
                End Using
            End Using
        End Using
    End Sub



End Class

'Imports System.Collections.Concurrent
'Imports System.Threading
'Imports System.Threading.Tasks

Class TryTakeDemo
    ' Demonstrates:
    ' BlockingCollection<T>.Add()
    ' BlockingCollection<T>.CompleteAdding()
    ' BlockingCollection<T>.TryTake()
    ' BlockingCollection<T>.IsCompleted
    Shared Sub BC_TryTake()
        ' Construct and fill our BlockingCollection
        Using bc As New BlockingCollection(Of Integer)()
            Dim NUMITEMS As Integer = 10000
            For i As Integer = 0 To NUMITEMS - 1
                bc.Add(i)
            Next
            bc.CompleteAdding()
            Dim outerSum As Integer = 0

            ' Delegate for consuming the BlockingCollection and adding up all items
            Dim action As Action =
                Sub()
                    Dim localItem As Integer
                    Dim localSum As Integer = 0

                    While bc.TryTake(localItem)
                        localSum += localItem
                    End While
                    Interlocked.Add(outerSum, localSum)
                End Sub

            ' Launch three parallel actions to consume the BlockingCollection
            Parallel.Invoke(action, action, action)

            Console.WriteLine("Sum[0..{0}) = {1}, should be {2}", NUMITEMS, outerSum, ((NUMITEMS * (NUMITEMS - 1)) / 2))
            Console.WriteLine("bc.IsCompleted = {0} (should be true)", bc.IsCompleted)
        End Using
    End Sub

End Class

'Imports System.Threading.Tasks
'Imports System.Collections.Concurrent

' Demonstrates:
' Bounded BlockingCollection<T>
' BlockingCollection<T>.TryAddToAny()
' BlockingCollection<T>.TryTakeFromAny()
Class ToAnyDemo
    Shared Sub BC_ToAny()
        Dim bcs As BlockingCollection(Of Integer)() = New BlockingCollection(Of Integer)(1) {}
        bcs(0) = New BlockingCollection(Of Integer)(5)
        ' collection bounded to 5 items
        bcs(1) = New BlockingCollection(Of Integer)(5)
        ' collection bounded to 5 items
        ' Should be able to add 10 items w/o blocking
        Dim numFailures As Integer = 0
        For i As Integer = 0 To 9
            If BlockingCollection(Of Integer).TryAddToAny(bcs, i) = -1 Then
                numFailures += 1
            End If
        Next
        Console.WriteLine("TryAddToAny: {0} failures (should be 0)", numFailures)

        ' Should be able to retrieve 10 items
        Dim numItems As Integer = 0
        Dim item As Integer
        While BlockingCollection(Of Integer).TryTakeFromAny(bcs, item) <> -1
            numItems += 1
        End While
        Console.WriteLine("TryTakeFromAny: retrieved {0} items (should be 10)", numItems)
    End Sub
End Class

'Imports System.Threading.Tasks
'Imports System.Collections.Concurrent

' Demonstrates:
' BlockingCollection<T>.Add()
' BlockingCollection<T>.CompleteAdding()
' BlockingCollection<T>.GetConsumingEnumerable()

Class ConsumingEnumerableDemo
    Shared Sub BC_GetConsumingEnumerable()
        Using bc As New BlockingCollection(Of Integer)()

            ' Kick off a producer task
            Task.Factory.StartNew(
                Sub()
                    For i As Integer = 0 To 9
                        bc.Add(i)
                        ' sleep 100 ms between adds
                        Thread.Sleep(100)
                    Next

                    ' Need to do this to keep foreach below from not responding.
                    bc.CompleteAdding()
                End Sub)
            ' Now consume the blocking collection with foreach.
            ' Use bc.GetConsumingEnumerable() instead of just bc because the
            ' former will block waiting for completion and the latter will
            ' simply take a snapshot of the current state of the underlying collection.
            For Each item In bc.GetConsumingEnumerable()
                Console.WriteLine(item)
            Next
        End Using
    End Sub
End Class

Commenti

BlockingCollection<T> è una classe di raccolta thread-safe che fornisce quanto segue:

Importante

Il tipo implementa l'interfaccia IDisposable. Dopo aver utilizzato il tipo, è necessario eliminarlo direttamente o indirettamente. Per eliminare direttamente il tipo, chiamare il metodo Dispose in un blocco try/catch. Per eliminarlo indirettamente, utilizzare un costrutto di linguaggio come ad esempio using in C# o Using in Visual Basic. Per altre informazioni, vedere la sezione "Uso di un oggetto che implementa IDisposable" nell'argomento relativo all'interfaccia IDisposable. Si noti inoltre che il Dispose() metodo non è thread-safe. Tutti gli altri membri pubblici e protetti di BlockingCollection<T> sono thread-safe e possono essere usati simultaneamente da più thread.

IProducerConsumerCollection<T> rappresenta una raccolta che consente l'aggiunta e la rimozione di dati thread-safe. BlockingCollection<T> viene usato come wrapper per un'istanza IProducerConsumerCollection<T> e consente la rimozione dei tentativi di rimozione dalla raccolta per bloccare fino a quando i dati non sono disponibili per essere rimossi. Analogamente, è possibile creare un oggetto BlockingCollection<T> per applicare un limite superiore al numero di elementi di dati consentiti nell'insieme IProducerConsumerCollection<T>. L'aggiunta di tentativi di raccolta può quindi bloccare fino a quando lo spazio non è disponibile per archiviare gli elementi aggiunti. In questo modo, BlockingCollection<T> è simile a una struttura di dati della coda di blocco tradizionale, ad eccezione del fatto che il meccanismo di archiviazione dei dati sottostante viene astratta come .IProducerConsumerCollection<T>

BlockingCollection<T> supporta delimitazione e blocco. Il limite significa che è possibile impostare la capacità massima della raccolta. Il limite è importante in determinati scenari perché consente di controllare le dimensioni massime della raccolta in memoria e impedisce ai thread di produzione di passare troppo avanti rispetto ai thread che utilizzano i thread. Più thread o attività possono aggiungere elementi alla raccolta simultaneamente e, se la raccolta raggiunge la capacità massima specificata, i thread di produzione bloccano fino a quando non viene rimosso un elemento. Più Consumer possono rimuovere contemporaneamente elementi e quando la raccolta diventa vuota, i thread Consumer si bloccano fino a quando un Producer aggiunge un elemento. Un thread di produzione può chiamare il CompleteAdding metodo per indicare che non verranno aggiunti altri elementi. I Consumer monitorano la proprietà IsCompleted per sapere quando la raccolta è vuota e non verranno aggiunti altri elementi.

Add e Take le operazioni vengono in genere eseguite in un ciclo. È possibile annullare un ciclo passando un CancellationToken oggetto al TryAdd metodo o TryTake e quindi controllando il valore della proprietà del IsCancellationRequested token in ogni iterazione. Se il valore è true, è possibile rispondere alla richiesta di annullamento eseguendo la pulizia di tutte le risorse e chiudendo il ciclo.

Quando si crea un BlockingCollection<T> oggetto, è possibile specificare non solo la capacità delimitata, ma anche il tipo di raccolta da utilizzare. Ad esempio, è possibile specificare un oggetto ConcurrentQueue<T> per il comportamento FIFO (First In, First Out) o un oggetto ConcurrentStack<T> per il comportamento LIFO (Last In, First Out). È possibile usare qualsiasi classe di raccolta che implementa l'interfaccia IProducerConsumerCollection<T>. Il tipo di raccolta predefinito per BlockingCollection<T> è ConcurrentQueue<T>.

Non modificare direttamente la raccolta sottostante. Utilizzare BlockingCollection<T> i metodi per aggiungere o rimuovere elementi. L'oggetto BlockingCollection<T> può diventare danneggiato se si modifica direttamente la raccolta sottostante.

BlockingCollection<T> non è stato progettato tenendo conto dell'accesso asincrono. Se l'applicazione richiede scenari producer/consumer asincroni, è consigliabile usare Channel<T> invece .

Costruttori

BlockingCollection<T>()

Inizializza una nuova istanza della classe BlockingCollection<T> senza un limite superiore.

BlockingCollection<T>(Int32)

Inizializza una nuova istanza della classe BlockingCollection<T> con il limite superiore specificato.

BlockingCollection<T>(IProducerConsumerCollection<T>)

Inizializza una nuova istanza della classe BlockingCollection<T> senza un limite superiore e usando l'oggetto IProducerConsumerCollection<T> fornito come archivio dati sottostante.

BlockingCollection<T>(IProducerConsumerCollection<T>, Int32)

Inizializza una nuova istanza della classe BlockingCollection<T> con il limite superiore specificato e usando l'oggetto IProducerConsumerCollection<T> fornito come archivio dati sottostante.

Proprietà

BoundedCapacity

Ottiene un valore che indica la capacità delimitata di questa istanza di BlockingCollection<T>.

Count

Ottiene il numero di elementi contenuti nella classe BlockingCollection<T>.

IsAddingCompleted

Ottiene un valore che indica se questo oggetto BlockingCollection<T> è stato contrassegnato come completo per l'aggiunta.

IsCompleted

Ottiene un valore che indica se questo oggetto BlockingCollection<T> è stato contrassegnato come completo per l'aggiunta ed è vuoto.

Metodi

Add(T)

Aggiunge l'elemento all'oggetto BlockingCollection<T>.

Add(T, CancellationToken)

Aggiunge l'elemento all'oggetto BlockingCollection<T>.

AddToAny(BlockingCollection<T>[], T)

Aggiunge l'elemento specificato a una qualsiasi delle istanze di BlockingCollection<T> specificate.

AddToAny(BlockingCollection<T>[], T, CancellationToken)

Aggiunge l'elemento specificato a una qualsiasi delle istanze di BlockingCollection<T> specificate.

CompleteAdding()

Contrassegna le istanze di BlockingCollection<T> per non accettare più alcuna aggiunta.

CopyTo(T[], Int32)

Copia tutti gli elementi dell'istanza di BlockingCollection<T> in una matrice unidimensionale compatibile, a partire dall'indice specificato della matrice di destinazione.

Dispose()

Rilascia tutte le risorse usate dall'istanza corrente della classe BlockingCollection<T>.

Dispose(Boolean)

Rilascia risorse usate dall'istanza di BlockingCollection<T>.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetConsumingEnumerable()

Fornisce un oggetto IEnumerable<T> usato per gli elementi nella raccolta.

GetConsumingEnumerable(CancellationToken)

Fornisce un oggetto IEnumerable<T> usato per gli elementi nella raccolta.

GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
Take()

Rimuove un elemento da BlockingCollection<T>.

Take(CancellationToken)

Rimuove un elemento da BlockingCollection<T>.

TakeFromAny(BlockingCollection<T>[], T)

Preleva un elemento da una delle istanze di BlockingCollection<T> specificate.

TakeFromAny(BlockingCollection<T>[], T, CancellationToken)

Preleva un elemento da una delle istanze di BlockingCollection<T> specificate considerando il token di annullamento specificato.

ToArray()

Copia gli elementi dall'istanza di BlockingCollection<T> in una nuova matrice.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)
TryAdd(T)

Prova ad aggiungere l'elemento specificato a BlockingCollection<T>.

TryAdd(T, Int32)

Prova ad aggiungere l'elemento specificato a BlockingCollection<T> nel periodo di tempo specificato.

TryAdd(T, Int32, CancellationToken)

Prova ad aggiungere l'elemento specificato a BlockingCollection<T> nel periodo di tempo specificato, considerando un token di annullamento.

TryAdd(T, TimeSpan)

Prova ad aggiungere l'elemento specificato a BlockingCollection<T>.

TryAddToAny(BlockingCollection<T>[], T)

Prova ad aggiungere l'elemento specificato a una delle istanze specifiche di BlockingCollection<T>.

TryAddToAny(BlockingCollection<T>[], T, Int32)

Prova ad aggiungere l'elemento specificato a una delle istanze specifiche di BlockingCollection<T>.

TryAddToAny(BlockingCollection<T>[], T, Int32, CancellationToken)

Prova ad aggiungere l'elemento specificato a una delle istanze specifiche di BlockingCollection<T>.

TryAddToAny(BlockingCollection<T>[], T, TimeSpan)

Prova ad aggiungere l'elemento specificato a una delle istanze di BlockingCollection<T> specificate considerando il token di annullamento specificato.

TryTake(T)

Prova a rimuovere un elemento da BlockingCollection<T>.

TryTake(T, Int32)

Prova rimuovere un elemento da BlockingCollection<T> entro il periodo di tempo specificato.

TryTake(T, Int32, CancellationToken)

Prova a rimuovere un elemento da BlockingCollection<T> nel periodo di tempo specificato, considerando un token di annullamento.

TryTake(T, TimeSpan)

Prova rimuovere un elemento da BlockingCollection<T> entro il periodo di tempo specificato.

TryTakeFromAny(BlockingCollection<T>[], T)

Prova a rimuovere un elemento da una delle istanze specifiche di BlockingCollection<T>.

TryTakeFromAny(BlockingCollection<T>[], T, Int32)

Prova a rimuovere un elemento da una delle istanze specifiche di BlockingCollection<T>.

TryTakeFromAny(BlockingCollection<T>[], T, Int32, CancellationToken)

Prova a rimuovere un elemento da una delle istanze specifiche di BlockingCollection<T>.

TryTakeFromAny(BlockingCollection<T>[], T, TimeSpan)

Prova a rimuovere un elemento da una delle istanze specifiche di BlockingCollection<T>.

Implementazioni dell'interfaccia esplicita

ICollection.CopyTo(Array, Int32)

Copia tutti gli elementi dell'istanza di BlockingCollection<T> in una matrice unidimensionale compatibile, a partire dall'indice specificato della matrice di destinazione.

ICollection.IsSynchronized

Ottiene un valore che indica se l'accesso a ICollection è sincronizzato (thread-safe).

ICollection.SyncRoot

Ottiene un oggetto che può essere usato per sincronizzare l'accesso a ICollection. Questa proprietà non è supportata.

IEnumerable.GetEnumerator()

Fornisce un oggetto IEnumerator per gli elementi nella raccolta.

IEnumerable<T>.GetEnumerator()

Fornisce un oggetto IEnumerator<T> per gli elementi nella raccolta.

Metodi di estensione

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

Crea un oggetto FrozenDictionary<TKey,TValue> da una IEnumerable<T> funzione di selettore di chiavi specificata.

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

Crea un oggetto FrozenDictionary<TKey,TValue> da un oggetto IEnumerable<T> secondo le funzioni specificate del selettore principale e del selettore di elementi.

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

Crea un oggetto FrozenSet<T> con i valori specificati.

ToImmutableArray<TSource>(IEnumerable<TSource>)

Crea una matrice non modificabile dalla raccolta specificata.

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

Costruisce un dizionario non modificabile da una raccolta di elementi esistente, applicando una funzione di trasformazione alle chiavi di origine.

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

Costruisce un dizionario non modificabile basato su una trasformazione di una sequenza.

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

Enumera e trasforma una sequenza e produce un dizionario non modificabile del relativo contenuto.

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

Enumera e trasforma una sequenza e produce un dizionario non modificabile del relativo contenuto usando l'operatore di confronto della chiave specificato.

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

Enumera e trasforma una sequenza e produce un dizionario non modificabile del relativo contenuto usando gli operatori di confronto della chiave e del valore specificati.

ToImmutableHashSet<TSource>(IEnumerable<TSource>)

Enumera una sequenza e produce un set di hash non modificabile del relativo contenuto.

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

Enumera una sequenza, produce un set di hash non modificabile del relativo contenuto e usa l'operatore di confronto di uguaglianza specificato per il tipo di set.

ToImmutableList<TSource>(IEnumerable<TSource>)

Enumera una sequenza e produce un elenco non modificabile del relativo contenuto.

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

Enumera e trasforma una sequenza e produce un dizionario ordinato non modificabile del relativo contenuto.

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

Enumera e trasforma una sequenza e produce un dizionario ordinato non modificabile del relativo contenuto usando l'operatore di confronto della chiave specificato.

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

Enumera e trasforma una sequenza e produce un dizionario ordinato non modificabile del relativo contenuto usando gli operatori di confronto della chiave e del valore specificati.

ToImmutableSortedSet<TSource>(IEnumerable<TSource>)

Enumera una sequenza e produce un set ordinato non modificabile del relativo contenuto.

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

Enumera una sequenza, produce un set ordinato non modificabile del relativo contenuto e usa l'operatore di confronto specificato.

CopyToDataTable<T>(IEnumerable<T>)

Restituisce un oggetto DataTable che contiene copie degli oggetti DataRow, dato un oggetto IEnumerable<T> di input dove il parametro generico DataRow è T.

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

Copia gli oggetti DataRow nell'oggetto DataTable specificato, dato un oggetto IEnumerable<T> di input dove il parametro generico T è DataRow.

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

Copia gli oggetti DataRow nell'oggetto DataTable specificato, dato un oggetto IEnumerable<T> di input dove il parametro generico T è DataRow.

Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>)

Applica una funzione accumulatore a una sequenza.

Aggregate<TSource,TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>)

Applica una funzione accumulatore a una sequenza. Il valore di inizializzazione specificato viene usato come valore iniziale dell'accumulatore.

Aggregate<TSource,TAccumulate,TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, Func<TAccumulate,TResult>)

Applica una funzione accumulatore a una sequenza. Il valore di inizializzazione specificato viene usato come valore iniziale dell'accumulatore e la funzione specificata viene usata per selezionare il valore risultante.

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

Fornisce funzionalità di blocco e limitazione per le raccolte thread-safe che implementano IProducerConsumerCollection<T>.

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

Fornisce funzionalità di blocco e limitazione per le raccolte thread-safe che implementano IProducerConsumerCollection<T>.

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

Determina se tutti gli elementi di una sequenza soddisfano una condizione.

Any<TSource>(IEnumerable<TSource>)

Determina se una sequenza contiene elementi.

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

Determina un qualsiasi elemento di una sequenza soddisfa una condizione.

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

Accoda un valore alla fine della sequenza.

AsEnumerable<TSource>(IEnumerable<TSource>)

Restituisce l'input tipizzato come oggetto IEnumerable<T>.

Average<TSource>(IEnumerable<TSource>, Func<TSource,Decimal>)

Calcola la media di una sequenza di valori Decimal ottenuti chiamando una funzione di trasformazione su ogni elemento della sequenza di input.

Average<TSource>(IEnumerable<TSource>, Func<TSource,Double>)

Calcola la media di una sequenza di valori Double ottenuti chiamando una funzione di trasformazione su ogni elemento della sequenza di input.

Average<TSource>(IEnumerable<TSource>, Func<TSource,Int32>)

Calcola la media di una sequenza di valori Int32 ottenuti chiamando una funzione di trasformazione su ogni elemento della sequenza di input.

Average<TSource>(IEnumerable<TSource>, Func<TSource,Int64>)

Calcola la media di una sequenza di valori Int64 ottenuti chiamando una funzione di trasformazione su ogni elemento della sequenza di input.

Average<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Decimal>>)

Calcola la media di una sequenza di valori Decimal nullable ottenuti chiamando una funzione di trasformazione su ogni elemento della sequenza di input.

Average<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Double>>)

Calcola la media di una sequenza di valori Double nullable ottenuti chiamando una funzione di trasformazione su ogni elemento della sequenza di input.

Average<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Int32>>)

Calcola la media di una sequenza di valori Int32 nullable ottenuti chiamando una funzione di trasformazione su ogni elemento della sequenza di input.

Average<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Int64>>)

Calcola la media di una sequenza di valori Int64 nullable ottenuti chiamando una funzione di trasformazione su ogni elemento della sequenza di input.

Average<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Single>>)

Calcola la media di una sequenza di valori Single nullable ottenuti chiamando una funzione di trasformazione su ogni elemento della sequenza di input.

Average<TSource>(IEnumerable<TSource>, Func<TSource,Single>)

Calcola la media di una sequenza di valori Single ottenuti chiamando una funzione di trasformazione su ogni elemento della sequenza di input.

Cast<TResult>(IEnumerable)

Esegue il cast degli elementi di un oggetto IEnumerable nel tipo specificato.

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

Suddivide gli elementi di una sequenza in blocchi di dimensioni al massimo size.

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

Concatena due sequenze.

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

Determina se una sequenza contiene uno specifico elemento utilizzando l'operatore di confronto uguaglianze predefinito.

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

Determina se una sequenza contiene un elemento specificato utilizzando un oggetto IEqualityComparer<T> specificato.

Count<TSource>(IEnumerable<TSource>)

Restituisce il numero di elementi in una sequenza.

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

Restituisce un valore che rappresenta il numero di elementi nella sequenza specificata che soddisfano una condizione.

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

Fornisce funzionalità di blocco e limitazione per le raccolte thread-safe che implementano IProducerConsumerCollection<T>.

DefaultIfEmpty<TSource>(IEnumerable<TSource>)

Restituisce gli elementi della sequenza specificata o il valore predefinito del parametro di tipo in una raccolta di singleton se la sequenza è vuota.

DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource)

Restituisce gli elementi della sequenza specificata o il valore specificato in una raccolta di singleton se la sequenza è vuota.

Distinct<TSource>(IEnumerable<TSource>)

Restituisce elementi distinti da una sequenza utilizzando l'operatore di confronto uguaglianze predefinito per confrontare i valori.

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

Restituisce elementi distinti da una sequenza utilizzando uno specificato IEqualityComparer<T> per confrontare valori.

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

Restituisce elementi distinti da una sequenza in base a una funzione di selettore chiave specificata.

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

Restituisce elementi distinti da una sequenza in base a una funzione di selettore chiave specificata e usando un comparer specificato per confrontare le chiavi.

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

Restituisce l'elemento in corrispondenza dell’indice specificato in una sequenza.

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

Restituisce l'elemento in corrispondenza dell’indice specificato in una sequenza.

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

Restituisce l'elemento in corrispondenza di un indice specificato in una sequenza o un valore predefinito se l'indice è esterno all'intervallo.

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

Restituisce l'elemento in corrispondenza di un indice specificato in una sequenza o un valore predefinito se l'indice è esterno all'intervallo.

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

Produce la differenza insiemistica di due sequenze utilizzando l'operatore di confronto eguaglianze predefinito per confrontare i valori.

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

Produce la differenza insiemistica delle due sequenze utilizzando l’oggetto IEqualityComparer<T> specificato per confrontare i valori.

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

Produce la differenza di set di due sequenze in base a una funzione del selettore di chiavi specificata.

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

Produce la differenza di set di due sequenze in base a una funzione del selettore di chiavi specificata.

First<TSource>(IEnumerable<TSource>)

Restituisce il primo elemento di una sequenza.

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

Restituisce il primo elemento in una sequenza che soddisfa una condizione specificata.

FirstOrDefault<TSource>(IEnumerable<TSource>)

Restituisce il primo elemento di una sequenza o un valore predefinito se la sequenza non contiene elementi.

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

Restituisce il primo elemento di una sequenza o un valore predefinito specificato se la sequenza non contiene elementi.

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

Restituisce il primo elemento della sequenza che soddisfa una condizione specificata o un valore predefinito se tale elemento non viene trovato.

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

Restituisce il primo elemento della sequenza che soddisfa una condizione o un valore predefinito specificato se non viene trovato alcun elemento.

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

Raggruppa gli elementi di una sequenza secondo una specificata funzione del selettore principale.

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

Raggruppa gli elementi di una sequenza secondo una specificata funzione del selettore principale e confronta le chiavi utilizzando un operatore di confronto specificato.

GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>)

Raggruppa gli elementi di una sequenza in base a una funzione specificata del selettore principale e proietta gli elementi di ogni gruppo utilizzando una funzione specificata.

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

Raggruppa gli elementi di una sequenza secondo una specificata funzione del selettore principale. Le chiavi vengono confrontate usando un operatore di confronto e gli elementi di ogni gruppo vengono proiettati usando una funzione specificata.

GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>)

Raggruppa gli elementi di una sequenza in base a una funzione del selettore principale specificata e crea un valore risultante da ciascun gruppo e relativa chiave.

GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>, IEqualityComparer<TKey>)

Raggruppa gli elementi di una sequenza in base a una funzione del selettore principale specificata e crea un valore risultante da ciascun gruppo e relativa chiave. Le chiavi vengono confrontati usando un operatore di confronto specificato.

GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>,TResult>)

Raggruppa gli elementi di una sequenza in base a una funzione del selettore principale specificata e crea un valore risultante da ciascun gruppo e relativa chiave. Gli elementi di ogni gruppo vengono proiettati usando una funzione specificata.

GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>, TResult>, IEqualityComparer<TKey>)

Raggruppa gli elementi di una sequenza in base a una funzione del selettore principale specificata e crea un valore risultante da ciascun gruppo e relativa chiave. I valori delle chiavi vengono confrontati usando un operatore di confronto specificato e gli elementi di ogni gruppo vengono proiettati usando una funzione specificata.

GroupJoin<TOuter,TInner,TKey,TResult>(IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter,TKey>, Func<TInner,TKey>, Func<TOuter,IEnumerable<TInner>, TResult>)

Correla gli elementi di due sequenze in base all'uguaglianza delle chiavi e raggruppa i risultati. Per confrontare le chiavi viene usato l'operatore di confronto uguaglianze predefinito.

GroupJoin<TOuter,TInner,TKey,TResult>(IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter,TKey>, Func<TInner,TKey>, Func<TOuter,IEnumerable<TInner>, TResult>, IEqualityComparer<TKey>)

Correla gli elementi di due sequenze in base all'uguaglianza delle chiavi e raggruppa i risultati. Per confrontare le chiavi, viene usato un oggetto IEqualityComparer<T> specificato.

Index<TSource>(IEnumerable<TSource>)

Fornisce funzionalità di blocco e limitazione per le raccolte thread-safe che implementano IProducerConsumerCollection<T>.

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

Produce l’intersezione insiemistica di due sequenze utilizzando l'operatore di confronto uguaglianze predefinito per confrontare i valori.

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

Produce l’intersezione insiemistica delle due sequenze utilizzando l’oggetto IEqualityComparer<T> specificato per confrontare i valori.

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

Produce l'intersezione set di due sequenze in base a una funzione di selettore di chiavi specificata.

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

Produce l'intersezione set di due sequenze in base a una funzione di selettore di chiavi specificata.

Join<TOuter,TInner,TKey,TResult>(IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter,TKey>, Func<TInner,TKey>, Func<TOuter,TInner,TResult>)

Correla gli elementi di due sequenze in base alle chiavi corrispondenti. Per confrontare le chiavi viene usato l'operatore di confronto uguaglianze predefinito.

Join<TOuter,TInner,TKey,TResult>(IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter,TKey>, Func<TInner,TKey>, Func<TOuter,TInner,TResult>, IEqualityComparer<TKey>)

Correla gli elementi di due sequenze in base alle chiavi corrispondenti. Per confrontare le chiavi, viene usato un oggetto IEqualityComparer<T> specificato.

Last<TSource>(IEnumerable<TSource>)

Restituisce l'ultimo elemento di una sequenza.

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

Restituisce l'ultimo elemento di una sequenza che soddisfa una condizione specificata.

LastOrDefault<TSource>(IEnumerable<TSource>)

Restituisce l'ultimo elemento di una sequenza o un valore predefinito se la sequenza non contiene elementi.

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

Restituisce l'ultimo elemento di una sequenza o un valore predefinito specificato se la sequenza non contiene elementi.

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

Restituisce l'ultimo elemento di una sequenza che soddisfa una condizione specificata o un valore predefinito se tale elemento non viene trovato.

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

Restituisce l'ultimo elemento di una sequenza che soddisfa una condizione o un valore predefinito specificato se non viene trovato alcun elemento di questo tipo.

LongCount<TSource>(IEnumerable<TSource>)

Restituisce un oggetto Int64 che rappresenta il numero totale di elementi in una sequenza.

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

Restituisce un oggetto Int64 che rappresenta quanti elementi in una sequenza soddisfano una condizione.

Max<TSource>(IEnumerable<TSource>)

Restituisce il valore massimo in una sequenza generica.

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

Restituisce il valore massimo in una sequenza generica.

Max<TSource>(IEnumerable<TSource>, Func<TSource,Decimal>)

Richiama una funzione di trasformazione su ogni elemento di una sequenza e restituisce il valore Decimal massimo.

Max<TSource>(IEnumerable<TSource>, Func<TSource,Double>)

Richiama una funzione di trasformazione su ogni elemento di una sequenza e restituisce il valore Double massimo.

Max<TSource>(IEnumerable<TSource>, Func<TSource,Int32>)

Richiama una funzione di trasformazione su ogni elemento di una sequenza e restituisce il valore Int32 massimo.

Max<TSource>(IEnumerable<TSource>, Func<TSource,Int64>)

Richiama una funzione di trasformazione su ogni elemento di una sequenza e restituisce il valore Int64 massimo.

Max<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Decimal>>)

Richiama una funzione di trasformazione su ogni elemento di una sequenza e restituisce il valore nullable Decimal massimo.

Max<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Double>>)

Richiama una funzione di trasformazione su ogni elemento di una sequenza e restituisce il valore nullable Double massimo.

Max<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Int32>>)

Richiama una funzione di trasformazione su ogni elemento di una sequenza e restituisce il valore nullable Int32 massimo.

Max<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Int64>>)

Richiama una funzione di trasformazione su ogni elemento di una sequenza e restituisce il valore nullable Int64 massimo.

Max<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Single>>)

Richiama una funzione di trasformazione su ogni elemento di una sequenza e restituisce il valore nullable Single massimo.

Max<TSource>(IEnumerable<TSource>, Func<TSource,Single>)

Richiama una funzione di trasformazione su ogni elemento di una sequenza e restituisce il valore Single massimo.

Max<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>)

Richiama una funzione di trasformazione su ogni elemento di una generica sequenza e restituisce il valore massimo risultante.

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

Restituisce il valore massimo in una sequenza generica in base a una funzione di selettore di chiavi specificata.

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

Restituisce il valore massimo in una sequenza generica in base a una funzione di selettore di chiavi e a un comparer chiave specificato.

Min<TSource>(IEnumerable<TSource>)

Restituisce il valore minimo in una sequenza generica.

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

Restituisce il valore minimo in una sequenza generica.

Min<TSource>(IEnumerable<TSource>, Func<TSource,Decimal>)

Richiama una funzione di trasformazione su ogni elemento di una sequenza e restituisce il valore Decimal minimo.

Min<TSource>(IEnumerable<TSource>, Func<TSource,Double>)

Richiama una funzione di trasformazione su ogni elemento di una sequenza e restituisce il valore Double minimo.

Min<TSource>(IEnumerable<TSource>, Func<TSource,Int32>)

Richiama una funzione di trasformazione su ogni elemento di una sequenza e restituisce il valore Int32 minimo.

Min<TSource>(IEnumerable<TSource>, Func<TSource,Int64>)

Richiama una funzione di trasformazione su ogni elemento di una sequenza e restituisce il valore Int64 minimo.

Min<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Decimal>>)

Richiama una funzione di trasformazione su ogni elemento di una sequenza e restituisce il valore nullable Decimal minimo.

Min<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Double>>)

Richiama una funzione di trasformazione su ogni elemento di una sequenza e restituisce il valore nullable Double minimo.

Min<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Int32>>)

Richiama una funzione di trasformazione su ogni elemento di una sequenza e restituisce il valore nullable Int32 minimo.

Min<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Int64>>)

Richiama una funzione di trasformazione su ogni elemento di una sequenza e restituisce il valore nullable Int64 minimo.

Min<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Single>>)

Richiama una funzione di trasformazione su ogni elemento di una sequenza e restituisce il valore nullable Single minimo.

Min<TSource>(IEnumerable<TSource>, Func<TSource,Single>)

Richiama una funzione di trasformazione su ogni elemento di una sequenza e restituisce il valore Single minimo.

Min<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>)

Richiama una funzione di trasformazione su ogni elemento di una generica sequenza e restituisce il valore minimo risultante.

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

Restituisce il valore minimo in una sequenza generica in base a una funzione di selettore di chiavi specificata.

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

Restituisce il valore minimo in una sequenza generica in base a una funzione di selettore di chiavi e a un comparer chiave specificato.

OfType<TResult>(IEnumerable)

Filtra gli elementi di un oggetto IEnumerable in base a un tipo specificato.

Order<T>(IEnumerable<T>)

Ordina in senso crescente gli elementi di una sequenza.

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

Ordina in senso crescente gli elementi di una sequenza.

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

Ordina in senso crescente gli elementi di una sequenza secondo una chiave.

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

Ordina in ordine crescente gli elementi di una sequenza utilizzando un operatore di confronto specificato.

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

Ordina in senso decrescente gli elementi di una sequenza secondo una chiave.

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

Ordina in senso decrescente gli elementi di una sequenza usando un operatore di confronto specificato.

OrderDescending<T>(IEnumerable<T>)

Ordina in senso decrescente gli elementi di una sequenza.

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

Ordina in senso decrescente gli elementi di una sequenza.

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

Aggiunge un valore all'inizio della sequenza.

Reverse<TSource>(IEnumerable<TSource>)

Inverte l'ordine degli elementi in una sequenza.

Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>)

Proietta ogni elemento di una sequenza in un nuovo form.

Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>)

Proietta ogni elemento di una sequenza in un nuovo modulo incorporando l'indice dell'elemento.

SelectMany<TSource,TResult>(IEnumerable<TSource>, Func<TSource,IEnumerable<TResult>>)

Proietta ogni elemento di una sequenza a un oggetto IEnumerable<T> e semplifica le sequenze risultanti in un’unica sequenza.

SelectMany<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,IEnumerable<TResult>>)

Proietta ogni elemento di una sequenza a un oggetto IEnumerable<T> e semplifica le sequenze risultanti in un’unica sequenza. L'indice di ogni elemento di origine viene usato nella maschera proiettata di tale elemento.

SelectMany<TSource,TCollection,TResult>(IEnumerable<TSource>, Func<TSource,IEnumerable<TCollection>>, Func<TSource,TCollection,TResult>)

Proietta ogni elemento di una sequenza a un oggetto IEnumerable<T>, semplifica le sequenze risultanti in un'unica sequenza e richiama una funzione del selettore di risultato su ogni elemento al suo interno.

SelectMany<TSource,TCollection,TResult>(IEnumerable<TSource>, Func<TSource,Int32,IEnumerable<TCollection>>, Func<TSource,TCollection,TResult>)

Proietta ogni elemento di una sequenza a un oggetto IEnumerable<T>, semplifica le sequenze risultanti in un'unica sequenza e richiama una funzione del selettore di risultato su ogni elemento al suo interno. L'indice di ogni elemento di origine viene usato nella maschera intermedia proiettata di tale elemento.

SequenceEqual<TSource>(IEnumerable<TSource>, IEnumerable<TSource>)

Determina se due sequenze sono uguali confrontando gli elementi tramite l’uso dell'operatore di confronto uguaglianze predefinito per il loro tipo.

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

Determina se due sequenze sono uguali confrontando i loro elementi mediante l’uso di un oggetto IEqualityComparer<T> specificato.

Single<TSource>(IEnumerable<TSource>)

Restituisce l'unico elemento di una sequenza e genera un'eccezione se nella sequenza non è presente esattamente un elemento.

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

Restituisce l'unico elemento di una sequenza che soddisfa una condizione specificata e genera un'eccezione se esistono più elementi di tale tipo.

SingleOrDefault<TSource>(IEnumerable<TSource>)

Restituisce il singolo elemento di una sequenza o un valore predefinito se la sequenza è vuota. Questo metodo genera un'eccezione se esiste più di un elemento nella sequenza.

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

Restituisce l'unico elemento di una sequenza o un valore predefinito specificato se la sequenza è vuota; questo metodo genera un'eccezione se nella sequenza è presente più di un elemento.

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

Restituisce l'unico elemento di una sequenza che soddisfa una condizione specificata o un valore predefinito se tale elemento esiste. Questo metodo genera un'eccezione se più di un elemento soddisfa la condizione.

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

Restituisce l'unico elemento di una sequenza che soddisfa una condizione specificata o un valore predefinito specificato se non esiste alcun elemento di questo tipo; questo metodo genera un'eccezione se più di un elemento soddisfa la condizione.

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

Ignora un numero specificato di elementi in una sequenza e quindi restituisce gli elementi rimanenti.

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

Restituisce una nuova raccolta enumerabile che contiene gli elementi di source con gli ultimi count elementi della raccolta di origine omessi.

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

Ignora gli elementi in sequenza finché la condizione specificata è soddisfatta e quindi restituisce gli elementi rimanenti.

SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>)

Ignora gli elementi in sequenza finché la condizione specificata è soddisfatta e quindi restituisce gli elementi rimanenti. L'indice dell'elemento viene usato nella logica della funzione predicativa.

Sum<TSource>(IEnumerable<TSource>, Func<TSource,Decimal>)

Calcola la somma della sequenza di valori Decimal ottenuti chiamando una funzione di trasformazione su ogni elemento della sequenza di input.

Sum<TSource>(IEnumerable<TSource>, Func<TSource,Double>)

Calcola la somma della sequenza di valori Double ottenuti chiamando una funzione di trasformazione su ogni elemento della sequenza di input.

Sum<TSource>(IEnumerable<TSource>, Func<TSource,Int32>)

Calcola la somma della sequenza di valori Int32 ottenuti chiamando una funzione di trasformazione su ogni elemento della sequenza di input.

Sum<TSource>(IEnumerable<TSource>, Func<TSource,Int64>)

Calcola la somma della sequenza di valori Int64 ottenuti chiamando una funzione di trasformazione su ogni elemento della sequenza di input.

Sum<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Decimal>>)

Calcola la somma della sequenza di valori Decimal nullable, ottenuti chiamando una funzione di trasformazione su ogni elemento della sequenza di input.

Sum<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Double>>)

Calcola la somma della sequenza di valori Double nullable, ottenuti chiamando una funzione di trasformazione su ogni elemento della sequenza di input.

Sum<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Int32>>)

Calcola la somma della sequenza di valori Int32 nullable, ottenuti chiamando una funzione di trasformazione su ogni elemento della sequenza di input.

Sum<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Int64>>)

Calcola la somma della sequenza di valori Int64 nullable, ottenuti chiamando una funzione di trasformazione su ogni elemento della sequenza di input.

Sum<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Single>>)

Calcola la somma della sequenza di valori Single nullable, ottenuti chiamando una funzione di trasformazione su ogni elemento della sequenza di input.

Sum<TSource>(IEnumerable<TSource>, Func<TSource,Single>)

Calcola la somma della sequenza di valori Single ottenuti chiamando una funzione di trasformazione su ogni elemento della sequenza di input.

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

Restituisce un numero specificato di elementi contigui dall'inizio di una sequenza.

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

Restituisce un intervallo specificato di elementi contigui da una sequenza.

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

Restituisce una nuova raccolta enumerabile che contiene gli ultimi count elementi di source.

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

Restituisce elementi di una sequenza finché una condizione specificata è soddisfatta.

TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>)

Restituisce elementi di una sequenza finché una condizione specificata è soddisfatta. L'indice dell'elemento viene usato nella logica della funzione predicativa.

ToArray<TSource>(IEnumerable<TSource>)

Crea una matrice da un oggetto IEnumerable<T>.

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

Crea un oggetto Dictionary<TKey,TValue> da un oggetto IEnumerable<T> secondo una funzione del selettore principale specificata.

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

Crea un oggetto Dictionary<TKey,TValue> da un oggetto IEnumerable<T> secondo una funzione del selettore principale specificata e un operatore di confronto principale.

ToDictionary<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>)

Crea un oggetto Dictionary<TKey,TValue> da un oggetto IEnumerable<T> secondo le funzioni specificate del selettore principale e del selettore di elementi.

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

Crea un oggetto Dictionary<TKey,TValue> da un oggetto IEnumerable<T> secondo una funzione specificata del selettore principale, un operatore di confronto principale e una funzione del selettore di elementi.

ToHashSet<TSource>(IEnumerable<TSource>)

Crea un oggetto HashSet<T> da un oggetto IEnumerable<T>.

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

Crea un oggetto HashSet<T> da un oggetto IEnumerable<T> usando comparer per confrontare le chiavi.

ToList<TSource>(IEnumerable<TSource>)

Crea un oggetto List<T> da un oggetto IEnumerable<T>.

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

Crea un oggetto Lookup<TKey,TElement> da un oggetto IEnumerable<T> secondo una funzione del selettore principale specificata.

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

Crea un oggetto Lookup<TKey,TElement> da un oggetto IEnumerable<T> secondo una funzione del selettore principale specificata e un operatore di confronto principale.

ToLookup<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>)

Crea un oggetto Lookup<TKey,TElement> da un oggetto IEnumerable<T> secondo le funzioni specificate del selettore principale e del selettore di elementi.

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

Crea un oggetto Lookup<TKey,TElement> da un oggetto IEnumerable<T> secondo una funzione specificata del selettore principale, un operatore di confronto principale e una funzione del selettore di elementi.

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

Tenta di determinare il numero di elementi in una sequenza senza forzare un'enumerazione.

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

Produce l'unione insiemistica delle due sequenze utilizzando l'operatore di confronto uguaglianze predefinito.

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

Produce l'unione insiemistica di due sequenze utilizzando un oggetto IEqualityComparer<T> specificato.

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

Produce l'unione del set di due sequenze in base a una funzione di selettore chiave specificata.

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

Produce l'unione del set di due sequenze in base a una funzione di selettore chiave specificata.

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

Filtra una sequenza di valori in base a un predicato.

Where<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>)

Filtra una sequenza di valori in base a un predicato. L'indice di ogni elemento viene usato nella logica della funzione predicato.

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

Produce una sequenza di tuple con gli elementi dalle due sequenze specificate.

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

Produce una sequenza di tupla con elementi delle tre sequenze specificate.

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

Applica una funzione specificata agli elementi corrispondenti di due sequenze, producendo una sequenza dei risultati.

AsParallel(IEnumerable)

Consente la parallelizzazione di una query.

AsParallel<TSource>(IEnumerable<TSource>)

Consente la parallelizzazione di una query.

AsQueryable(IEnumerable)

Converte un oggetto IEnumerable in un oggetto IQueryable.

AsQueryable<TElement>(IEnumerable<TElement>)

Converte un generico oggetto IEnumerable<T> in un generico oggetto IQueryable<T>.

Ancestors<T>(IEnumerable<T>)

Restituisce una raccolta di elementi che contiene i predecessori di ciascun nodo nella raccolta di origine.

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

Restituisce una raccolta di elementi filtrati che contiene i predecessori di ciascun nodo nella raccolta di origine. Solo gli elementi che hanno un oggetto XName corrispondente vengono inclusi nella raccolta.

DescendantNodes<T>(IEnumerable<T>)

Restituisce una raccolta di nodi discendenti di ciascun documento ed elemento nella raccolta di origine.

Descendants<T>(IEnumerable<T>)

Restituisce una raccolta di elementi che contiene gli elementi discendenti di ciascun elemento e documento nella raccolta di origine.

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

Restituisce una raccolta filtrata di elementi che contiene gli elementi discendenti di ciascun elemento e documento nella raccolta di origine. Solo gli elementi che hanno un oggetto XName corrispondente vengono inclusi nella raccolta.

Elements<T>(IEnumerable<T>)

Restituisce una raccolta di elementi figlio di ciascun elemento e documento nella raccolta di origine.

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

Restituisce una raccolta filtrata degli elementi figlio di ciascun elemento e documento nella raccolta di origine. Solo gli elementi che hanno un oggetto XName corrispondente vengono inclusi nella raccolta.

InDocumentOrder<T>(IEnumerable<T>)

Restituisce una raccolta di nodi che contiene tutti i nodi nella raccolta di origine ordinati in base all'ordine con cui sono riportati nel documento.

Nodes<T>(IEnumerable<T>)

Restituisce una raccolta di nodi figlio di ciascun documento ed elemento nella raccolta di origine.

Remove<T>(IEnumerable<T>)

Rimuove ciascun nodo nella raccolta di origine dal nodo padre.

Si applica a

Thread safety

Il metodo Dispose non è thread-safe. Tutti gli altri membri pubblici e protetti di BlockingCollection<T> sono thread-safe e possono essere usati contemporaneamente da più thread.

Vedi anche