Бөлісу құралы:


BlockingCollection<T> Класс

Определение

Предоставляет блокирующие и ограничивающие возможности для потоковобезопасных коллекций, реализующих 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)

Параметры типа

T

Тип элементов в коллекции.

Наследование
BlockingCollection<T>
Атрибуты
Реализации

Примеры

В следующем примере показано, как добавлять и принимать элементы одновременно из коллекции блокировок:

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

Комментарии

BlockingCollection<T> — это класс коллекции, безопасный для потоков, который предоставляет следующие возможности:

  • Реализация шаблона производителя или потребителя; BlockingCollection<T> — это оболочка для интерфейса IProducerConsumerCollection<T>.

  • Параллельное добавление и удаление элементов из нескольких потоков с помощью методов Add и Take.

  • Ограниченная коллекция, блокирующая операции Add и Take, когда коллекция заполнена или пуста.

  • Отмена операций Add или Take с помощью объекта CancellationToken в методе TryAdd или TryTake.

Важный

Этот тип реализует интерфейс IDisposable. Завершив использование типа, его следует удалить напрямую или косвенно. Чтобы удалить тип напрямую, вызовите метод Dispose в блоке try/catch. Чтобы удалить его косвенно, используйте конструкцию языка, например using (в C#) или Using (в Visual Basic). Дополнительные сведения см. в разделе "Использование объекта, реализующего IDisposable" в разделе интерфейса IDisposable. Кроме того, обратите внимание, что метод Dispose() не является потокобезопасной. Все остальные общедоступные и защищенные члены BlockingCollection<T> являются потокобезопасными и могут использоваться одновременно из нескольких потоков.

IProducerConsumerCollection<T> представляет коллекцию, которая позволяет добавлять и удалять данные в потокобезопасном режиме. BlockingCollection<T> используется в качестве оболочки для экземпляра IProducerConsumerCollection<T> и позволяет удалять попытки удаления из коллекции, пока данные не будут удалены. Аналогичным образом можно создать BlockingCollection<T>, чтобы применить верхнюю границу к количеству элементов данных, разрешенных в IProducerConsumerCollection<T>; попытка добавления в коллекцию может блокироваться до тех пор, пока не будет доступно пространство для хранения добавленных элементов. Таким образом, BlockingCollection<T> похожа на традиционную структуру данных очереди блокировки, за исключением того, что базовый механизм хранения данных абстрагируется как IProducerConsumerCollection<T>.

BlockingCollection<T> поддерживает привязку и блокировку. Ограничивающий означает, что можно задать максимальную емкость коллекции. Привязка важна в определенных сценариях, так как позволяет управлять максимальным размером коллекции в памяти, и не позволяет производить потоки слишком далеко впереди потребляемых потоков. Несколько потоков или задач могут одновременно добавлять элементы в коллекцию, и если коллекция достигает указанной максимальной емкости, производство потоков будет блокироваться, пока элемент не будет удален. Несколько потребителей могут одновременно удалять элементы, и если коллекция становится пустой, потребляемые потоки блокируются до тех пор, пока производитель не добавит элемент. Создающий поток может вызывать метод CompleteAdding, чтобы указать, что больше элементов не будет добавлено. Потребители отслеживают свойство IsCompleted, чтобы узнать, когда коллекция пуста, и больше элементов не будет добавлено.

операции Add и Take обычно выполняются в цикле. Можно отменить цикл, передав объект CancellationToken в метод TryAdd или TryTake, а затем проверив значение свойства IsCancellationRequested маркера для каждой итерации. Если значение равно true, вы можете ответить на запрос отмены, очищая все ресурсы и выход из цикла.

При создании объекта BlockingCollection<T> можно указать не только ограничивающую емкость, но и тип используемой коллекции. Например, можно указать объект ConcurrentQueue<T> для первого в поведения, первом выходе (FIFO) или объект ConcurrentStack<T> для последнего во время первого выхода (LIFO). Вы можете использовать любой класс коллекции, реализующий интерфейс IProducerConsumerCollection<T>. Тип коллекции по умолчанию для BlockingCollection<T>ConcurrentQueue<T>.

Не изменяйте базовую коллекцию напрямую. Используйте методы BlockingCollection<T> для добавления или удаления элементов. Объект BlockingCollection<T> может стать поврежденным, если изменить базовую коллекцию напрямую.

BlockingCollection<T> не был разработан с асинхронным доступом. Если приложению требуются асинхронные сценарии производителя или потребителя, рассмотрите возможность использования Channel<T> вместо этого.

Конструкторы

BlockingCollection<T>()

Инициализирует новый экземпляр класса BlockingCollection<T> без верхней границы.

BlockingCollection<T>(Int32)

Инициализирует новый экземпляр класса BlockingCollection<T> с указанной верхней границой.

BlockingCollection<T>(IProducerConsumerCollection<T>)

Инициализирует новый экземпляр класса BlockingCollection<T> без верхней границы и использует предоставленный IProducerConsumerCollection<T> в качестве базового хранилища данных.

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

Инициализирует новый экземпляр класса BlockingCollection<T> с указанной верхней границой и использует предоставленный IProducerConsumerCollection<T> в качестве базового хранилища данных.

Свойства

BoundedCapacity

Возвращает ограниченную емкость этого экземпляра BlockingCollection<T>.

Count

Возвращает количество элементов, содержащихся в BlockingCollection<T>.

IsAddingCompleted

Возвращает, помечен ли этот BlockingCollection<T> как завершенный для добавления.

IsCompleted

Возвращает, помечен ли этот BlockingCollection<T> как завершенный для добавления и пустого.

Методы

Add(T)

Добавляет элемент в BlockingCollection<T>.

Add(T, CancellationToken)

Добавляет элемент в BlockingCollection<T>.

AddToAny(BlockingCollection<T>[], T)

Добавляет указанный элемент в любой из указанных экземпляров BlockingCollection<T>.

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

Добавляет указанный элемент в любой из указанных экземпляров BlockingCollection<T>.

CompleteAdding()

Помечает экземпляры BlockingCollection<T> как не принимающие никаких дополнительных дополнений.

CopyTo(T[], Int32)

Копирует все элементы в экземпляре BlockingCollection<T> в совместимый одномерный массив, начиная с указанного индекса целевого массива.

Dispose()

Освобождает все ресурсы, используемые текущим экземпляром класса BlockingCollection<T>.

Dispose(Boolean)

Освобождает ресурсы, используемые экземпляром BlockingCollection<T>.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetConsumingEnumerable()

Предоставляет IEnumerable<T> для элементов в коллекции.

GetConsumingEnumerable(CancellationToken)

Предоставляет IEnumerable<T> для элементов в коллекции.

GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
Take()

Удаляет элемент из BlockingCollection<T>.

Take(CancellationToken)

Удаляет элемент из BlockingCollection<T>.

TakeFromAny(BlockingCollection<T>[], T)

Принимает элемент из любого из указанных BlockingCollection<T> экземпляров.

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

Принимает элемент из любого из указанных экземпляров BlockingCollection<T> при наблюдении за указанным маркером отмены.

ToArray()

Копирует элементы из экземпляра BlockingCollection<T> в новый массив.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)
TryAdd(T)

Пытается добавить указанный элемент в BlockingCollection<T>.

TryAdd(T, Int32)

Пытается добавить указанный элемент в BlockingCollection<T> в течение указанного периода времени.

TryAdd(T, Int32, CancellationToken)

Пытается добавить указанный элемент в BlockingCollection<T> в течение указанного периода времени при наблюдении маркера отмены.

TryAdd(T, TimeSpan)

Пытается добавить указанный элемент в BlockingCollection<T>.

TryAddToAny(BlockingCollection<T>[], T)

Пытается добавить указанный элемент в любой из указанных экземпляров BlockingCollection<T>.

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

Пытается добавить указанный элемент в любой из указанных экземпляров BlockingCollection<T>.

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

Пытается добавить указанный элемент в любой из указанных экземпляров BlockingCollection<T>.

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

Пытается добавить указанный элемент в любой из указанных экземпляров BlockingCollection<T> при наблюдении за указанным маркером отмены.

TryTake(T)

Пытается удалить элемент из BlockingCollection<T>.

TryTake(T, Int32)

Пытается удалить элемент из BlockingCollection<T> за указанный период времени.

TryTake(T, Int32, CancellationToken)

Пытается удалить элемент из BlockingCollection<T> за указанный период времени при наблюдении маркера отмены.

TryTake(T, TimeSpan)

Пытается удалить элемент из BlockingCollection<T> за указанный период времени.

TryTakeFromAny(BlockingCollection<T>[], T)

Пытается удалить элемент из любого из указанных BlockingCollection<T> экземпляров.

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

Пытается удалить элемент из любого из указанных BlockingCollection<T> экземпляров.

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

Пытается удалить элемент из любого из указанных BlockingCollection<T> экземпляров.

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

Пытается удалить элемент из любого из указанных BlockingCollection<T> экземпляров.

Явные реализации интерфейса

ICollection.CopyTo(Array, Int32)

Копирует все элементы в экземпляре BlockingCollection<T> в совместимый одномерный массив, начиная с указанного индекса целевого массива.

ICollection.IsSynchronized

Возвращает значение, указывающее, синхронизирован ли доступ к ICollection (потокобезопасный).

ICollection.SyncRoot

Получает объект, который можно использовать для синхронизации доступа к ICollection. Это свойство не поддерживается.

IEnumerable.GetEnumerator()

Предоставляет IEnumerator для элементов в коллекции.

IEnumerable<T>.GetEnumerator()

Предоставляет IEnumerator<T> для элементов в коллекции.

Методы расширения

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

Создает FrozenDictionary<TKey,TValue> из IEnumerable<T> в соответствии с указанной функцией селектора ключей.

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

Создает FrozenDictionary<TKey,TValue> из IEnumerable<T> в соответствии с указанными функциями селектора ключей и селектора элементов.

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

Создает FrozenSet<T> с указанными значениями.

ToImmutableArray<TSource>(IEnumerable<TSource>)

Создает неизменяемый массив из указанной коллекции.

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

Создает неизменяемый словарь из существующей коллекции элементов, применяя функцию преобразования к исходным ключам.

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

Создает неизменяемый словарь на основе некоторого преобразования последовательности.

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

Перечисляет и преобразует последовательность и создает неизменяемый словарь его содержимого.

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

Перечисляет и преобразует последовательность и создает неизменяемый словарь его содержимого с помощью указанного средства сравнения ключей.

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

Перечисляет и преобразует последовательность и создает неизменяемый словарь его содержимого с помощью указанных средств сравнения ключей и значений.

ToImmutableHashSet<TSource>(IEnumerable<TSource>)

Перечисляет последовательность и создает неизменяемый хэш-набор его содержимого.

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

Перечисляет последовательность, создает неизменяемый хэш-набор его содержимого и использует указанный средство сравнения равенства для типа набора.

ToImmutableList<TSource>(IEnumerable<TSource>)

Перечисляет последовательность и создает неизменяемый список его содержимого.

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

Перечисляет и преобразует последовательность и создает неизменяемый отсортированный словарь его содержимого.

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

Перечисляет и преобразует последовательность и создает неизменяемый отсортированный словарь его содержимого с помощью указанного средства сравнения ключей.

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

Перечисляет и преобразует последовательность и создает неизменяемый отсортированный словарь его содержимого с помощью указанных средств сравнения ключей и значений.

ToImmutableSortedSet<TSource>(IEnumerable<TSource>)

Перечисляет последовательность и создает неизменяемый отсортированный набор его содержимого.

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

Перечисляет последовательность, создает неизменяемый отсортированный набор его содержимого и использует указанный сопоставитель.

CopyToDataTable<T>(IEnumerable<T>)

Возвращает DataTable, содержащий копии объектов DataRow, учитывая входной объект IEnumerable<T>, в котором T универсальный параметр DataRow.

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

Копирует объекты DataRow в указанный DataTable, учитывая входной IEnumerable<T> объект, в котором T универсальный параметр DataRow.

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

Копирует объекты DataRow в указанный DataTable, учитывая входной IEnumerable<T> объект, в котором T универсальный параметр DataRow.

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

Применяет функцию аккумулятора по последовательности.

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

Применяет функцию аккумулятора по последовательности. Указанное начальное значение используется в качестве начального значения аккумулятора.

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

Применяет функцию аккумулятора по последовательности. Указанное начальное значение используется в качестве начального значения аккумулятора, а указанная функция используется для выбора значения результата.

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

Предоставляет блокирующие и ограничивающие возможности для потоковобезопасных коллекций, реализующих IProducerConsumerCollection<T>.

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

Предоставляет блокирующие и ограничивающие возможности для потоковобезопасных коллекций, реализующих IProducerConsumerCollection<T>.

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

Определяет, соответствуют ли все элементы последовательности условию.

Any<TSource>(IEnumerable<TSource>)

Определяет, содержит ли последовательность любые элементы.

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

Определяет, соответствует ли любой элемент последовательности условию.

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

Добавляет значение в конец последовательности.

AsEnumerable<TSource>(IEnumerable<TSource>)

Возвращает входные данные, типизированные как IEnumerable<T>.

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

Вычисляет среднее значение последовательности Decimal значений, полученных путем вызова функции преобразования для каждого элемента входной последовательности.

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

Вычисляет среднее значение последовательности Double значений, полученных путем вызова функции преобразования для каждого элемента входной последовательности.

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

Вычисляет среднее значение последовательности Int32 значений, полученных путем вызова функции преобразования для каждого элемента входной последовательности.

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

Вычисляет среднее значение последовательности Int64 значений, полученных путем вызова функции преобразования для каждого элемента входной последовательности.

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

Вычисляет среднее значение последовательности значений, допускающих значение NULL, Decimal, полученных путем вызова функции преобразования для каждого элемента входной последовательности.

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

Вычисляет среднее значение последовательности значений, допускающих значение NULL, Double, полученных путем вызова функции преобразования для каждого элемента входной последовательности.

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

Вычисляет среднее значение последовательности значений, допускающих значение NULL, Int32, полученных путем вызова функции преобразования для каждого элемента входной последовательности.

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

Вычисляет среднее значение последовательности значений, допускающих значение NULL, Int64, полученных путем вызова функции преобразования для каждого элемента входной последовательности.

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

Вычисляет среднее значение последовательности значений, допускающих значение NULL, Single, полученных путем вызова функции преобразования для каждого элемента входной последовательности.

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

Вычисляет среднее значение последовательности Single значений, полученных путем вызова функции преобразования для каждого элемента входной последовательности.

Cast<TResult>(IEnumerable)

Приведение элементов IEnumerable к указанному типу.

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

Разбивает элементы последовательности на блоки размера не более size.

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

Объединяет две последовательности.

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

Определяет, содержит ли последовательность указанный элемент с помощью средства сравнения равенства по умолчанию.

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

Определяет, содержит ли последовательность указанный элемент с помощью указанного IEqualityComparer<T>.

Count<TSource>(IEnumerable<TSource>)

Возвращает количество элементов в последовательности.

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

Возвращает число, представляющее, сколько элементов в указанной последовательности удовлетворяет условию.

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

Предоставляет блокирующие и ограничивающие возможности для потоковобезопасных коллекций, реализующих IProducerConsumerCollection<T>.

DefaultIfEmpty<TSource>(IEnumerable<TSource>)

Возвращает элементы указанной последовательности или значение параметра типа по умолчанию в одной коллекции, если последовательность пуста.

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

Возвращает элементы указанной последовательности или указанное значение в одной коллекции, если последовательность пуста.

Distinct<TSource>(IEnumerable<TSource>)

Возвращает отдельные элементы из последовательности с помощью сравнения значений по умолчанию.

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

Возвращает отдельные элементы из последовательности с помощью указанного IEqualityComparer<T> для сравнения значений.

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

Возвращает отдельные элементы из последовательности в соответствии с указанной функцией селектора ключей.

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

Возвращает отдельные элементы из последовательности в соответствии с указанной функцией селектора ключей и с помощью указанного средства сравнения ключей.

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

Возвращает элемент по указанному индексу в последовательности.

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

Возвращает элемент по указанному индексу в последовательности.

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

Возвращает элемент по указанному индексу в последовательности или значении по умолчанию, если индекс выходит из диапазона.

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

Возвращает элемент по указанному индексу в последовательности или значении по умолчанию, если индекс выходит из диапазона.

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

Создает различие набора двух последовательностей с помощью сравнения значений по умолчанию.

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

Создает различие набора двух последовательностей с помощью указанного IEqualityComparer<T> для сравнения значений.

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

Создает разницу набора двух последовательностей в соответствии с указанной функцией селектора ключей.

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

Создает разницу набора двух последовательностей в соответствии с указанной функцией селектора ключей.

First<TSource>(IEnumerable<TSource>)

Возвращает первый элемент последовательности.

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

Возвращает первый элемент в последовательности, удовлетворяющей указанному условию.

FirstOrDefault<TSource>(IEnumerable<TSource>)

Возвращает первый элемент последовательности или значение по умолчанию, если последовательность не содержит элементов.

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

Возвращает первый элемент последовательности или указанное значение по умолчанию, если последовательность не содержит элементов.

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

Возвращает первый элемент последовательности, удовлетворяющий условию или значению по умолчанию, если такой элемент не найден.

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

Возвращает первый элемент последовательности, удовлетворяющий условию, или заданное значение по умолчанию, если такой элемент не найден.

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

Группируйте элементы последовательности в соответствии с указанной функцией селектора ключей.

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

Группирует элементы последовательности в соответствии с указанной функцией селектора ключей и сравнивает ключи с помощью указанного средства сравнения.

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

Группируйте элементы последовательности в соответствии с указанной функцией селектора ключей и проектируйте элементы для каждой группы с помощью указанной функции.

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

Группируйте элементы последовательности в соответствии с функцией селектора ключей. Ключи сравниваются с помощью средства сравнения, а элементы каждой группы проецируются с помощью указанной функции.

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

Группирует элементы последовательности в соответствии с указанной функцией селектора ключей и создает значение результата из каждой группы и его ключа.

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

Группирует элементы последовательности в соответствии с указанной функцией селектора ключей и создает значение результата из каждой группы и его ключа. Ключи сравниваются с помощью указанного средства сравнения.

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

Группирует элементы последовательности в соответствии с указанной функцией селектора ключей и создает значение результата из каждой группы и его ключа. Элементы каждой группы проецируются с помощью указанной функции.

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

Группирует элементы последовательности в соответствии с указанной функцией селектора ключей и создает значение результата из каждой группы и его ключа. Ключевые значения сравниваются с помощью указанного средства сравнения, а элементы каждой группы проецируются с помощью указанной функции.

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

Сопоставляет элементы двух последовательностей на основе равенства ключей и группирует результаты. Средство сравнения равенства по умолчанию используется для сравнения ключей.

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

Сопоставляет элементы двух последовательностей на основе равенства ключей и группирует результаты. Для сравнения ключей используется указанный IEqualityComparer<T>.

Index<TSource>(IEnumerable<TSource>)

Возвращает перечисление, которое включает индекс элемента в кортеж.

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

Создает набор пересечения двух последовательностей с помощью сравнения значений по умолчанию.

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

Создает набор пересечения двух последовательностей с помощью указанного IEqualityComparer<T> для сравнения значений.

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

Создает пересечение набора двух последовательностей в соответствии с указанной функцией селектора ключей.

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

Создает пересечение набора двух последовательностей в соответствии с указанной функцией селектора ключей.

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

Сопоставляет элементы двух последовательностей на основе соответствующих ключей. Средство сравнения равенства по умолчанию используется для сравнения ключей.

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

Сопоставляет элементы двух последовательностей на основе соответствующих ключей. Для сравнения ключей используется указанный IEqualityComparer<T>.

Last<TSource>(IEnumerable<TSource>)

Возвращает последний элемент последовательности.

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

Возвращает последний элемент последовательности, удовлетворяющей указанному условию.

LastOrDefault<TSource>(IEnumerable<TSource>)

Возвращает последний элемент последовательности или значение по умолчанию, если последовательность не содержит элементов.

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

Возвращает последний элемент последовательности или указанное значение по умолчанию, если последовательность не содержит элементов.

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

Возвращает последний элемент последовательности, удовлетворяющей условию или значению по умолчанию, если такой элемент не найден.

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

Возвращает последний элемент последовательности, удовлетворяющей условию, или заданное значение по умолчанию, если такой элемент не найден.

LongCount<TSource>(IEnumerable<TSource>)

Возвращает Int64, представляющую общее количество элементов в последовательности.

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

Возвращает Int64, представляющий количество элементов в последовательности, удовлетворяющих условию.

Max<TSource>(IEnumerable<TSource>)

Возвращает максимальное значение в универсальной последовательности.

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

Возвращает максимальное значение в универсальной последовательности.

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

Вызывает функцию преобразования для каждого элемента последовательности и возвращает максимальное значение Decimal.

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

Вызывает функцию преобразования для каждого элемента последовательности и возвращает максимальное значение Double.

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

Вызывает функцию преобразования для каждого элемента последовательности и возвращает максимальное значение Int32.

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

Вызывает функцию преобразования для каждого элемента последовательности и возвращает максимальное значение Int64.

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

Вызывает функцию преобразования для каждого элемента последовательности и возвращает максимально допустимое значение null Decimal.

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

Вызывает функцию преобразования для каждого элемента последовательности и возвращает максимально допустимое значение null Double.

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

Вызывает функцию преобразования для каждого элемента последовательности и возвращает максимально допустимое значение null Int32.

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

Вызывает функцию преобразования для каждого элемента последовательности и возвращает максимально допустимое значение null Int64.

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

Вызывает функцию преобразования для каждого элемента последовательности и возвращает максимально допустимое значение null Single.

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

Вызывает функцию преобразования для каждого элемента последовательности и возвращает максимальное значение Single.

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

Вызывает функцию преобразования для каждого элемента универсальной последовательности и возвращает максимальное результирующее значение.

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

Возвращает максимальное значение в универсальной последовательности в соответствии с указанной функцией селектора ключей.

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

Возвращает максимальное значение в универсальной последовательности в соответствии с указанной функцией селектора ключей и компратором ключей.

Min<TSource>(IEnumerable<TSource>)

Возвращает минимальное значение в универсальной последовательности.

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

Возвращает минимальное значение в универсальной последовательности.

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

Вызывает функцию преобразования для каждого элемента последовательности и возвращает минимальное значение Decimal.

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

Вызывает функцию преобразования для каждого элемента последовательности и возвращает минимальное значение Double.

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

Вызывает функцию преобразования для каждого элемента последовательности и возвращает минимальное значение Int32.

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

Вызывает функцию преобразования для каждого элемента последовательности и возвращает минимальное значение Int64.

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

Вызывает функцию преобразования для каждого элемента последовательности и возвращает минимальное значение, допускающее значение null Decimal.

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

Вызывает функцию преобразования для каждого элемента последовательности и возвращает минимальное значение, допускающее значение null Double.

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

Вызывает функцию преобразования для каждого элемента последовательности и возвращает минимальное значение, допускающее значение null Int32.

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

Вызывает функцию преобразования для каждого элемента последовательности и возвращает минимальное значение, допускающее значение null Int64.

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

Вызывает функцию преобразования для каждого элемента последовательности и возвращает минимальное значение, допускающее значение null Single.

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

Вызывает функцию преобразования для каждого элемента последовательности и возвращает минимальное значение Single.

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

Вызывает функцию преобразования для каждого элемента универсальной последовательности и возвращает минимальное результирующее значение.

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

Возвращает минимальное значение в универсальной последовательности в соответствии с указанной функцией селектора ключей.

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

Возвращает минимальное значение в универсальной последовательности в соответствии с указанной функцией селектора ключей и компратером ключей.

OfType<TResult>(IEnumerable)

Фильтрует элементы IEnumerable на основе указанного типа.

Order<T>(IEnumerable<T>)

Сортирует элементы последовательности в порядке возрастания.

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

Сортирует элементы последовательности в порядке возрастания.

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

Сортирует элементы последовательности в порядке возрастания в соответствии с ключом.

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

Сортирует элементы последовательности в порядке возрастания с помощью указанного сравнения.

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

Сортирует элементы последовательности в порядке убывания в соответствии с ключом.

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

Сортирует элементы последовательности в порядке убывания с помощью указанного сравнения.

OrderDescending<T>(IEnumerable<T>)

Сортирует элементы последовательности в порядке убывания.

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

Сортирует элементы последовательности в порядке убывания.

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

Добавляет значение в начало последовательности.

Reverse<TSource>(IEnumerable<TSource>)

Инвертирует порядок элементов в последовательности.

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

Проектируйте каждый элемент последовательности в новую форму.

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

Проектируйте каждый элемент последовательности в новую форму, включив индекс элемента.

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

Проектирует каждый элемент последовательности в IEnumerable<T> и преобразует полученные последовательности в одну последовательность.

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

Проектирует каждый элемент последовательности в IEnumerable<T>, а результирующий последовательности — в одну последовательность. Индекс каждого исходного элемента используется в проецируемых формах этого элемента.

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

Проектирует каждый элемент последовательности в IEnumerable<T>, сглаживает полученные последовательности в одну последовательность и вызывает функцию селектора результатов для каждого элемента.

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

Проектирует каждый элемент последовательности в IEnumerable<T>, сглаживает полученные последовательности в одну последовательность и вызывает функцию селектора результатов для каждого элемента. Индекс каждого исходного элемента используется в промежуточной проецированной форме этого элемента.

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

Определяет, равны ли две последовательности путем сравнения элементов с помощью средства сравнения равенства по умолчанию для их типа.

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

Определяет, равны ли две последовательности, сравнивая их элементы с помощью указанной IEqualityComparer<T>.

Single<TSource>(IEnumerable<TSource>)

Возвращает единственный элемент последовательности и создает исключение, если в последовательности нет ни одного элемента.

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

Возвращает единственный элемент последовательности, удовлетворяющей указанному условию, и создает исключение, если существует несколько таких элементов.

SingleOrDefault<TSource>(IEnumerable<TSource>)

Возвращает единственный элемент последовательности или значение по умолчанию, если последовательность пуста; этот метод создает исключение, если в последовательности существует несколько элементов.

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

Возвращает единственный элемент последовательности или указанное значение по умолчанию, если последовательность пуста; этот метод создает исключение, если в последовательности существует несколько элементов.

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

Возвращает единственный элемент последовательности, удовлетворяющий указанному условию или значению по умолчанию, если такой элемент не существует; Этот метод создает исключение, если несколько элементов удовлетворяют условию.

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

Возвращает единственный элемент последовательности, удовлетворяющей указанному условию, или заданное значение по умолчанию, если такой элемент отсутствует; Этот метод создает исключение, если несколько элементов удовлетворяют условию.

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

Проходит указанное число элементов в последовательности, а затем возвращает оставшиеся элементы.

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

Возвращает новую перечисленную коллекцию, содержащую элементы из source с последними count элементами исходной коллекции.

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

Обход элементов последовательности до тех пор, пока указанное условие имеет значение true, а затем возвращает оставшиеся элементы.

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

Обход элементов последовательности до тех пор, пока указанное условие имеет значение true, а затем возвращает оставшиеся элементы. Индекс элемента используется в логике функции предиката.

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

Вычисляет сумму последовательности значений Decimal, полученных путем вызова функции преобразования для каждого элемента входной последовательности.

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

Вычисляет сумму последовательности значений Double, полученных путем вызова функции преобразования для каждого элемента входной последовательности.

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

Вычисляет сумму последовательности значений Int32, полученных путем вызова функции преобразования для каждого элемента входной последовательности.

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

Вычисляет сумму последовательности значений Int64, полученных путем вызова функции преобразования для каждого элемента входной последовательности.

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

Вычисляет сумму последовательности значений, допускающих значение NULL, Decimal, полученных путем вызова функции преобразования для каждого элемента входной последовательности.

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

Вычисляет сумму последовательности значений, допускающих значение NULL, Double, полученных путем вызова функции преобразования для каждого элемента входной последовательности.

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

Вычисляет сумму последовательности значений, допускающих значение NULL, Int32, полученных путем вызова функции преобразования для каждого элемента входной последовательности.

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

Вычисляет сумму последовательности значений, допускающих значение NULL, Int64, полученных путем вызова функции преобразования для каждого элемента входной последовательности.

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

Вычисляет сумму последовательности значений, допускающих значение NULL, Single, полученных путем вызова функции преобразования для каждого элемента входной последовательности.

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

Вычисляет сумму последовательности значений Single, полученных путем вызова функции преобразования для каждого элемента входной последовательности.

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

Возвращает указанное число смежных элементов из начала последовательности.

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

Возвращает указанный диапазон смежных элементов из последовательности.

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

Возвращает новую перечисленную коллекцию, содержащую последние элементы count из source.

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

Возвращает элементы из последовательности до тех пор, пока указанное условие имеет значение true.

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

Возвращает элементы из последовательности до тех пор, пока указанное условие имеет значение true. Индекс элемента используется в логике функции предиката.

ToArray<TSource>(IEnumerable<TSource>)

Создает массив из IEnumerable<T>.

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

Создает Dictionary<TKey,TValue> из IEnumerable<T> в соответствии с указанной функцией селектора ключей.

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

Создает Dictionary<TKey,TValue> из IEnumerable<T> в соответствии с указанной функцией селектора ключей и компратором ключей.

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

Создает Dictionary<TKey,TValue> из IEnumerable<T> в соответствии с указанными функциями селектора ключей и селектора элементов.

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

Создает Dictionary<TKey,TValue> из IEnumerable<T> в соответствии с указанной функцией селектора ключей, компратором и функцией селектора элементов.

ToHashSet<TSource>(IEnumerable<TSource>)

Создает HashSet<T> из IEnumerable<T>.

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

Создает HashSet<T> из IEnumerable<T> с помощью comparer для сравнения ключей.

ToList<TSource>(IEnumerable<TSource>)

Создает List<T> из IEnumerable<T>.

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

Создает Lookup<TKey,TElement> из IEnumerable<T> в соответствии с указанной функцией селектора ключей.

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

Создает Lookup<TKey,TElement> из IEnumerable<T> в соответствии с указанной функцией селектора ключей и компратором ключей.

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

Создает Lookup<TKey,TElement> из IEnumerable<T> в соответствии с указанными функциями селектора ключей и селектора элементов.

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

Создает Lookup<TKey,TElement> из IEnumerable<T> в соответствии с указанной функцией селектора ключей, компратором и функцией селектора элементов.

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

Пытается определить количество элементов в последовательности без принудительного перечисления.

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

Создает объединение наборов двух последовательностей с помощью средства сравнения равенства по умолчанию.

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

Создает объединение наборов двух последовательностей с помощью указанного IEqualityComparer<T>.

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

Создает объединение наборов двух последовательностей в соответствии с указанной функцией селектора ключей.

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

Создает объединение наборов двух последовательностей в соответствии с указанной функцией селектора ключей.

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

Фильтрует последовательность значений на основе предиката.

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

Фильтрует последовательность значений на основе предиката. Индекс каждого элемента используется в логике функции предиката.

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

Создает последовательность кортежей с элементами из двух указанных последовательностей.

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

Создает последовательность кортежей с элементами из трех указанных последовательностей.

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

Применяет указанную функцию к соответствующим элементам двух последовательностей, создавая последовательность результатов.

AsParallel(IEnumerable)

Включает параллелизацию запроса.

AsParallel<TSource>(IEnumerable<TSource>)

Включает параллелизацию запроса.

AsQueryable(IEnumerable)

Преобразует IEnumerable в IQueryable.

AsQueryable<TElement>(IEnumerable<TElement>)

Преобразует универсальный IEnumerable<T> в универсальный IQueryable<T>.

Ancestors<T>(IEnumerable<T>)

Возвращает коллекцию элементов, содержащих предки каждого узла в исходной коллекции.

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

Возвращает отфильтрованную коллекцию элементов, содержащих предки каждого узла в исходной коллекции. В коллекцию включены только элементы с соответствующими XName.

DescendantNodes<T>(IEnumerable<T>)

Возвращает коллекцию потомков каждого документа и элемента в исходной коллекции.

Descendants<T>(IEnumerable<T>)

Возвращает коллекцию элементов, содержащих потомки каждого элемента и документа в исходной коллекции.

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

Возвращает отфильтрованную коллекцию элементов, содержащих потомки каждого элемента и документа в исходной коллекции. В коллекцию включены только элементы с соответствующими XName.

Elements<T>(IEnumerable<T>)

Возвращает коллекцию дочерних элементов каждого элемента и документа в исходной коллекции.

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

Возвращает отфильтрованную коллекцию дочерних элементов каждого элемента и документа в исходной коллекции. В коллекцию включены только элементы с соответствующими XName.

InDocumentOrder<T>(IEnumerable<T>)

Возвращает коллекцию узлов, содержащих все узлы в исходной коллекции, отсортированные в порядке документа.

Nodes<T>(IEnumerable<T>)

Возвращает коллекцию дочерних узлов каждого документа и элемента в исходной коллекции.

Remove<T>(IEnumerable<T>)

Удаляет каждый узел в исходной коллекции из родительского узла.

Применяется к

Потокобезопасность

Метод Dispose не является потокобезопасной. Все остальные общедоступные и защищенные члены BlockingCollection<T> являются потокобезопасными и могут использоваться одновременно из нескольких потоков.

См. также раздел