IProducerConsumerCollection<T> Gränssnitt

Definition

Definierar metoder för att manipulera trådsäkra samlingar som är avsedda för producent-/konsumentanvändning. Det här gränssnittet ger en enhetlig representation för producent-/konsumentsamlingar så att abstraktioner på högre nivå som BlockingCollection<T> kan använda samlingen som den underliggande lagringsmekanismen.

generic <typename T>
public interface class IProducerConsumerCollection : System::Collections::Generic::IEnumerable<T>, System::Collections::ICollection
public interface IProducerConsumerCollection<T> : System.Collections.Generic.IEnumerable<T>, System.Collections.ICollection
type IProducerConsumerCollection<'T> = interface
    interface seq<'T>
    interface IEnumerable
    interface ICollection
type IProducerConsumerCollection<'T> = interface
    interface seq<'T>
    interface ICollection
    interface IEnumerable
Public Interface IProducerConsumerCollection(Of T)
Implements ICollection, IEnumerable(Of T)

Typparametrar

T

Anger typen av element i samlingen.

Härledda
Implementeringar

Exempel

I följande exempel visas en stackdatastruktur som implementerar System.Collections.Concurrent.IProducerConsumerCollection<T>.

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

// Sample implementation of IProducerConsumerCollection(T)
// -- in this case, a thread-safe stack.
public class SafeStack<T> : IProducerConsumerCollection<T>
{
    // Used for enforcing thread-safety
    private object m_lockObject = new object();

    // We'll use a regular old Stack for our core operations
    private Stack<T> m_sequentialStack = null;

    //
    // Constructors
    //
    public SafeStack()
    {
        m_sequentialStack = new Stack<T>();
    }

    public SafeStack(IEnumerable<T> collection)
    {
        m_sequentialStack = new Stack<T>(collection);
    }

    //
    // Safe Push/Pop support
    //
    public void Push(T item)
    {
        lock (m_lockObject) m_sequentialStack.Push(item);
    }

    public bool TryPop(out T item)
    {
        bool rval = true;
        lock (m_lockObject)
        {
            if (m_sequentialStack.Count == 0) { item = default(T); rval = false; }
            else
            {
                item = m_sequentialStack.Pop();
            }
        }
        return rval;
    }

    //
    // IProducerConsumerCollection(T) support
    //
    public bool TryTake(out T item)
    {
        return TryPop(out item);
    }

    public bool TryAdd(T item)
    {
        Push(item);
        return true; // Push doesn't fail
    }

    public T[] ToArray()
    {
        T[] rval = null;
        lock (m_lockObject) rval = m_sequentialStack.ToArray();
        return rval;
    }

    public void CopyTo(T[] array, int index)
    {
        lock (m_lockObject) m_sequentialStack.CopyTo(array, index);
    }

    //
    // Support for IEnumerable(T)
    //
    public IEnumerator<T> GetEnumerator()
    {
        // The performance here will be unfortunate for large stacks,
        // but thread-safety is effectively implemented.
        Stack<T> stackCopy = null;
        lock (m_lockObject) stackCopy = new Stack<T>(m_sequentialStack);
        return stackCopy.GetEnumerator();
    }

    //
    // Support for IEnumerable
    //
    IEnumerator IEnumerable.GetEnumerator()
    {
        return ((IEnumerable<T>)this).GetEnumerator();
    }

    //
    // Support for ICollection
    //
    public bool IsSynchronized
    {
        get { return true; }
    }

    public object SyncRoot
    {
        get { return m_lockObject; }
    }

    public int Count
    {
        get { return m_sequentialStack.Count; }
    }

    public void CopyTo(Array array, int index)
    {
        lock (m_lockObject) ((ICollection)m_sequentialStack).CopyTo(array, index);
    }
}

public class Program
{
    static void Main()
    {
        TestSafeStack();

        // Keep the console window open in debug mode.
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }

    // Test our implementation of IProducerConsumerCollection(T)
    // Demonstrates:
    //      IPCC(T).TryAdd()
    //      IPCC(T).TryTake()
    //      IPCC(T).CopyTo()
    static void TestSafeStack()
    {
        SafeStack<int> stack = new SafeStack<int>();
        IProducerConsumerCollection<int> ipcc = (IProducerConsumerCollection<int>)stack;

        // Test Push()/TryAdd()
        stack.Push(10); Console.WriteLine("Pushed 10");
        ipcc.TryAdd(20); Console.WriteLine("IPCC.TryAdded 20");
        stack.Push(15); Console.WriteLine("Pushed 15");

        int[] testArray = new int[3];

        // Try CopyTo() within boundaries
        try
        {
            ipcc.CopyTo(testArray, 0);
            Console.WriteLine("CopyTo() within boundaries worked, as expected");
        }
        catch (Exception e)
        {
            Console.WriteLine("CopyTo() within boundaries unexpectedly threw an exception: {0}", e.Message);
        }

        // Try CopyTo() that overflows
        try
        {
            ipcc.CopyTo(testArray, 1);
            Console.WriteLine("CopyTo() with index overflow worked, and it SHOULD NOT HAVE");
        }
        catch (Exception e)
        {
            Console.WriteLine("CopyTo() with index overflow threw an exception, as expected: {0}", e.Message);
        }

        // Test enumeration
        Console.Write("Enumeration (should be three items): ");
        foreach (int item in stack) Console.Write("{0} ", item);
        Console.WriteLine("");

        // Test TryPop()
        int popped = 0;
        if (stack.TryPop(out popped))
        {
            Console.WriteLine("Successfully popped {0}", popped);
        }
        else
        {
            Console.WriteLine("FAILED to pop!!");
        }

        // Test Count
        Console.WriteLine("stack count is {0}, should be 2", stack.Count);

        // Test TryTake()
        if (ipcc.TryTake(out popped))
        {
            Console.WriteLine("Successfully IPCC-TryTaked {0}", popped);
        }
        else
        {
            Console.WriteLine("FAILED to IPCC.TryTake!!");
        }
    }
}
Imports System.Collections.Concurrent

Module IProdCon
    ' Sample implementation of IProducerConsumerCollection(T) -- in this case,
    ' a thread-safe stack.
    Public Class SafeStack(Of T)
        Implements IProducerConsumerCollection(Of T)

        ' Used for enforcing thread-safety
        Private m_lockObject As New Object()

        ' We'll use a regular old Stack for our core operations
        Private m_sequentialStack As Stack(Of T) = Nothing

        '
        ' Constructors
        '
        Public Sub New()
            m_sequentialStack = New Stack(Of T)()
        End Sub

        Public Sub New(ByVal collection As IEnumerable(Of T))
            m_sequentialStack = New Stack(Of T)(collection)
        End Sub

        '
        ' Safe Push/Pop support
        '
        Public Sub Push(ByVal item As T)
            SyncLock m_lockObject
                m_sequentialStack.Push(item)
            End SyncLock
        End Sub

        Public Function TryPop(ByRef item As T) As Boolean
            Dim rval As Boolean = True
            SyncLock m_lockObject
                If m_sequentialStack.Count = 0 Then
                    item = Nothing
                    rval = False
                Else
                    item = m_sequentialStack.Pop()
                End If
            End SyncLock
            Return rval
        End Function

        '
        ' IProducerConsumerCollection(T) support
        '
        Public Function TryTake(ByRef item As T) As Boolean Implements IProducerConsumerCollection(Of T).TryTake
            Return TryPop(item)
        End Function

        Public Function TryAdd(ByVal item As T) As Boolean Implements IProducerConsumerCollection(Of T).TryAdd
            Push(item)
            ' Push doesn't fail
            Return True
        End Function

        Public Function ToArray() As T() Implements IProducerConsumerCollection(Of T).ToArray
            Dim rval As T() = Nothing
            SyncLock m_lockObject
                rval = m_sequentialStack.ToArray()
            End SyncLock
            Return rval
        End Function

        Public Sub CopyTo(ByVal array As T(), ByVal index As Integer) Implements IProducerConsumerCollection(Of T).CopyTo
            SyncLock m_lockObject
                m_sequentialStack.CopyTo(array, index)
            End SyncLock
        End Sub



        '
        ' Support for IEnumerable(T)
        '
        Public Function GetEnumerator() As IEnumerator(Of T) Implements IEnumerable(Of T).GetEnumerator
            ' The performance here will be unfortunate for large stacks,
            ' but thread-safety is effectively implemented.
            Dim stackCopy As Stack(Of T) = Nothing
            SyncLock m_lockObject
                stackCopy = New Stack(Of T)(m_sequentialStack)
            End SyncLock
            Return stackCopy.GetEnumerator()
        End Function


        '
        ' Support for IEnumerable
        '
        Private Function GetEnumerator2() As IEnumerator Implements IEnumerable.GetEnumerator
            Return DirectCast(Me, IEnumerable(Of T)).GetEnumerator()
        End Function

        ' 
        ' Support for ICollection
        '
        Public ReadOnly Property IsSynchronized() As Boolean Implements ICollection.IsSynchronized
            Get
                Return True
            End Get
        End Property

        Public ReadOnly Property SyncRoot() As Object Implements ICollection.SyncRoot
            Get
                Return m_lockObject
            End Get
        End Property

        Public ReadOnly Property Count() As Integer Implements ICollection.Count
            Get
                Return m_sequentialStack.Count
            End Get
        End Property

        Public Sub CopyTo(ByVal array As Array, ByVal index As Integer) Implements ICollection.CopyTo
            SyncLock m_lockObject
                DirectCast(m_sequentialStack, ICollection).CopyTo(array, index)
            End SyncLock
        End Sub
    End Class

    ' Test our implementation of IProducerConsumerCollection(T)
    ' Demonstrates:
    ' IPCC(T).TryAdd()
    ' IPCC(T).TryTake()
    ' IPCC(T).CopyTo()
    Private Sub TestSafeStack()
        Dim stack As New SafeStack(Of Integer)()
        Dim ipcc As IProducerConsumerCollection(Of Integer) = DirectCast(stack, IProducerConsumerCollection(Of Integer))

        ' Test Push()/TryAdd()
        stack.Push(10)
        Console.WriteLine("Pushed 10")
        ipcc.TryAdd(20)
        Console.WriteLine("IPCC.TryAdded 20")
        stack.Push(15)
        Console.WriteLine("Pushed 15")

        Dim testArray As Integer() = New Integer(2) {}

        ' Try CopyTo() within boundaries
        Try
            ipcc.CopyTo(testArray, 0)
            Console.WriteLine("CopyTo() within boundaries worked, as expected")
        Catch e As Exception
            Console.WriteLine("CopyTo() within boundaries unexpectedly threw an exception: {0}", e.Message)
        End Try

        ' Try CopyTo() that overflows
        Try
            ipcc.CopyTo(testArray, 1)
            Console.WriteLine("CopyTo() with index overflow worked, and it SHOULD NOT HAVE")
        Catch e As Exception
            Console.WriteLine("CopyTo() with index overflow threw an exception, as expected: {0}", e.Message)
        End Try

        ' Test enumeration
        Console.Write("Enumeration (should be three items): ")
        For Each item As Integer In stack
            Console.Write("{0} ", item)
        Next
        Console.WriteLine("")

        ' Test TryPop()
        Dim popped As Integer = 0
        If stack.TryPop(popped) Then
            Console.WriteLine("Successfully popped {0}", popped)
        Else
            Console.WriteLine("FAILED to pop!!")
        End If

        ' Test Count
        Console.WriteLine("stack count is {0}, should be 2", stack.Count)

        ' Test TryTake()
        If ipcc.TryTake(popped) Then
            Console.WriteLine("Successfully IPCC-TryTaked {0}", popped)
        Else
            Console.WriteLine("FAILED to IPCC.TryTake!!")
        End If
    End Sub

    Sub Main()
        TestSafeStack()

        ' Keep the console window open in debug mode
        Console.WriteLine("Press any key to exit.")
        Console.ReadKey()

    End Sub

End Module

Kommentarer

Mer information finns iThread-Safe-samlingar och BlockingCollection-översikt.

Egenskaper

Name Description
Count

Hämtar antalet element som finns i ICollection.

(Ärvd från ICollection)
IsSynchronized

Hämtar ett värde som anger om åtkomsten ICollection till är synkroniserad (trådsäker).

(Ärvd från ICollection)
SyncRoot

Hämtar ett objekt som kan användas för att synkronisera åtkomsten ICollectiontill .

(Ärvd från ICollection)

Metoder

Name Description
CopyTo(Array, Int32)

Kopierar elementen i ICollection till en Array, med början vid ett visst Array index.

(Ärvd från ICollection)
CopyTo(T[], Int32)

Kopierar elementen i IProducerConsumerCollection<T> till en Array, med början vid ett angivet index.

GetEnumerator()

Returnerar en uppräknare som itererar genom en samling.

(Ärvd från IEnumerable)
ToArray()

Kopierar elementen i IProducerConsumerCollection<T> till en ny matris.

TryAdd(T)

Försöker lägga till ett objekt i IProducerConsumerCollection<T>.

TryTake(T)

Försöker ta bort och returnera ett objekt från IProducerConsumerCollection<T>.

Tilläggsmetoder

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

Använder en ackumulatorfunktion över en sekvens. Det angivna startvärdet används som det initiala ackumulatorvärdet och den angivna funktionen används för att välja resultatvärdet.

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

Använder en ackumulatorfunktion över en sekvens. Det angivna startvärdet används som det initiala ackumulatorvärdet.

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

Använder en ackumulatorfunktion över en sekvens.

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

Avgör om alla element i en sekvens uppfyller ett villkor.

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

Returnerar en filtrerad samling element som innehåller överordnade element för varje nod i källsamlingen. Endast element som har matchning XName ingår i samlingen.

Ancestors<T>(IEnumerable<T>)

Returnerar en samling element som innehåller överordnade element för varje nod i källsamlingen.

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

Avgör om något element i en sekvens uppfyller ett villkor.

Any<TSource>(IEnumerable<TSource>)

Avgör om en sekvens innehåller några element.

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

Lägger till ett värde i slutet av sekvensen.

AsEnumerable<TSource>(IEnumerable<TSource>)

Returnerar indata som skrivits som IEnumerable<T>.

AsParallel(IEnumerable)

Möjliggör parallellisering av en fråga.

AsParallel<TSource>(IEnumerable<TSource>)

Möjliggör parallellisering av en fråga.

AsQueryable(IEnumerable)

Konverterar en IEnumerable till en IQueryable.

AsQueryable<TElement>(IEnumerable<TElement>)

Konverterar en allmän IEnumerable<T> till en allmän IQueryable<T>.

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

Beräknar medelvärdet av en sekvens med Decimal värden som erhålls genom att anropa en transformeringsfunktion på varje element i indatasekvensen.

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

Beräknar medelvärdet av en sekvens med Double värden som erhålls genom att anropa en transformeringsfunktion på varje element i indatasekvensen.

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

Beräknar medelvärdet av en sekvens med Int32 värden som erhålls genom att anropa en transformeringsfunktion på varje element i indatasekvensen.

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

Beräknar medelvärdet av en sekvens med Int64 värden som erhålls genom att anropa en transformeringsfunktion på varje element i indatasekvensen.

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

Beräknar medelvärdet av en sekvens med null-värden Decimal som erhålls genom att anropa en transformeringsfunktion på varje element i indatasekvensen.

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

Beräknar medelvärdet av en sekvens med null-värden Double som erhålls genom att anropa en transformeringsfunktion på varje element i indatasekvensen.

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

Beräknar medelvärdet av en sekvens med null-värden Int32 som erhålls genom att anropa en transformeringsfunktion på varje element i indatasekvensen.

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

Beräknar medelvärdet av en sekvens med null-värden Int64 som erhålls genom att anropa en transformeringsfunktion på varje element i indatasekvensen.

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

Beräknar medelvärdet av en sekvens med null-värden Single som erhålls genom att anropa en transformeringsfunktion på varje element i indatasekvensen.

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

Beräknar medelvärdet av en sekvens med Single värden som erhålls genom att anropa en transformeringsfunktion på varje element i indatasekvensen.

Cast<TResult>(IEnumerable)

Omvandlar elementen i en IEnumerable till den angivna typen.

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

Sammanfogar två sekvenser.

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

Avgör om en sekvens innehåller ett angivet element med hjälp av en angiven IEqualityComparer<T>.

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

Avgör om en sekvens innehåller ett angivet element med hjälp av standardjämförlikningsjämföraren.

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

Kopierar DataRow objekt till angivet DataTable, givet ett indataobjekt IEnumerable<T> där den generiska parametern T är DataRow.

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

Kopierar DataRow objekt till angivet DataTable, givet ett indataobjekt IEnumerable<T> där den generiska parametern T är DataRow.

CopyToDataTable<T>(IEnumerable<T>)

Returnerar en DataTable som innehåller kopior av objekten DataRow , givet ett indataobjekt IEnumerable<T> där den generiska parametern T är DataRow.

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

Returnerar ett tal som representerar hur många element i den angivna sekvensen som uppfyller ett villkor.

Count<TSource>(IEnumerable<TSource>)

Returnerar antalet element i en sekvens.

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

Returnerar elementen i den angivna sekvensen eller det angivna värdet i en singleton-samling om sekvensen är tom.

DefaultIfEmpty<TSource>(IEnumerable<TSource>)

Returnerar elementen i den angivna sekvensen eller typparameterns standardvärde i en singleton-samling om sekvensen är tom.

DescendantNodes<T>(IEnumerable<T>)

Returnerar en samling underordnade noder i varje dokument och element i källsamlingen.

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

Returnerar en filtrerad samling element som innehåller underordnade element för varje element och dokument i källsamlingen. Endast element som har matchning XName ingår i samlingen.

Descendants<T>(IEnumerable<T>)

Returnerar en samling element som innehåller underordnade element för varje element och dokument i källsamlingen.

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

Returnerar distinkta element från en sekvens med hjälp av en angiven IEqualityComparer<T> för att jämföra värden.

Distinct<TSource>(IEnumerable<TSource>)

Returnerar distinkta element från en sekvens med hjälp av standardjämlikhetsjämföraren för att jämföra värden.

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

Returnerar elementet vid ett angivet index i en sekvens.

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

Returnerar elementet vid ett angivet index i en sekvens eller ett standardvärde om indexet ligger utom intervallet.

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

Returnerar en filtrerad samling av underordnade element i varje element och dokument i källsamlingen. Endast element som har matchning XName ingår i samlingen.

Elements<T>(IEnumerable<T>)

Returnerar en samling underordnade element i varje element och dokument i källsamlingen.

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

Skapar den inställda skillnaden mellan två sekvenser med hjälp av angivna IEqualityComparer<T> för att jämföra värden.

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

Ger den angivna skillnaden mellan två sekvenser genom att använda standardjämlikhetsjämförlikningsjämföraren för att jämföra värden.

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

Returnerar det första elementet i en sekvens som uppfyller ett angivet villkor.

First<TSource>(IEnumerable<TSource>)

Returnerar det första elementet i en sekvens.

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

Returnerar det första elementet i sekvensen som uppfyller ett villkor eller ett standardvärde om inget sådant element hittas.

FirstOrDefault<TSource>(IEnumerable<TSource>)

Returnerar det första elementet i en sekvens eller ett standardvärde om sekvensen inte innehåller några element.

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

Grupperar elementen i en sekvens enligt en angiven nyckelväljare och skapar ett resultatvärde från varje grupp och dess nyckel. Nyckelvärden jämförs med en angiven jämförelse, och elementen i varje grupp projiceras med hjälp av en angiven funktion.

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

Grupperar elementen i en sekvens enligt en angiven nyckelväljare och skapar ett resultatvärde från varje grupp och dess nyckel. Elementen i varje grupp projiceras med hjälp av en angiven funktion.

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

Grupperar elementen i en sekvens enligt en nyckelväljare. Nycklarna jämförs med en jämförelse och varje grupps element projiceras med hjälp av en angiven funktion.

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

Grupperar elementen i en sekvens enligt en angiven nyckelväljare och projicerar elementen för varje grupp med hjälp av en angiven funktion.

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

Grupperar elementen i en sekvens enligt en angiven nyckelväljare och skapar ett resultatvärde från varje grupp och dess nyckel. Nycklarna jämförs med en angiven jämförelse.

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

Grupperar elementen i en sekvens enligt en angiven nyckelväljare och skapar ett resultatvärde från varje grupp och dess nyckel.

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

Grupperar elementen i en sekvens enligt en angiven nyckelväljare och jämför nycklarna med hjälp av en angiven jämförelse.

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

Grupperar elementen i en sekvens enligt en angiven nyckelväljare.

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

Korrelerar elementen i två sekvenser baserat på nyckeljämlikhet och grupperar resultaten. En angiven IEqualityComparer<T> används för att jämföra nycklar.

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

Korrelerar elementen i två sekvenser baserat på likhet mellan nycklar och grupperar resultatet. Standardjämförlikningsjämföraren används för att jämföra nycklar.

InDocumentOrder<T>(IEnumerable<T>)

Returnerar en samling noder som innehåller alla noder i källsamlingen, sorterade i dokumentordning.

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

Skapar den angivna skärningspunkten mellan två sekvenser med hjälp av angivna IEqualityComparer<T> för att jämföra värden.

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

Genererar den angivna skärningspunkten för två sekvenser med hjälp av standardjämlikhetsjämförlikningsjämföraren för att jämföra värden.

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

Korrelerar elementen i två sekvenser baserat på matchande nycklar. En angiven IEqualityComparer<T> används för att jämföra nycklar.

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

Korrelerar elementen i två sekvenser baserat på matchande nycklar. Standardjämförlikningsjämföraren används för att jämföra nycklar.

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

Returnerar det sista elementet i en sekvens som uppfyller ett angivet villkor.

Last<TSource>(IEnumerable<TSource>)

Returnerar det sista elementet i en sekvens.

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

Returnerar det sista elementet i en sekvens som uppfyller ett villkor eller ett standardvärde om inget sådant element hittas.

LastOrDefault<TSource>(IEnumerable<TSource>)

Returnerar det sista elementet i en sekvens eller ett standardvärde om sekvensen inte innehåller några element.

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

Returnerar ett Int64 som representerar hur många element i en sekvens som uppfyller ett villkor.

LongCount<TSource>(IEnumerable<TSource>)

Returnerar ett Int64 som representerar det totala antalet element i en sekvens.

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

Anropar en transformeringsfunktion på varje element i en allmän sekvens och returnerar det maximala resulterande värdet.

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

Anropar en transformeringsfunktion på varje element i en sekvens och returnerar det maximala Decimal värdet.

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

Anropar en transformeringsfunktion på varje element i en sekvens och returnerar det maximala Double värdet.

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

Anropar en transformeringsfunktion på varje element i en sekvens och returnerar det maximala Int32 värdet.

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

Anropar en transformeringsfunktion på varje element i en sekvens och returnerar det maximala Int64 värdet.

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

Anropar en transformeringsfunktion på varje element i en sekvens och returnerar det maximala null-värdet Decimal .

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

Anropar en transformeringsfunktion på varje element i en sekvens och returnerar det maximala null-värdet Double .

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

Anropar en transformeringsfunktion på varje element i en sekvens och returnerar det maximala null-värdet Int32 .

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

Anropar en transformeringsfunktion på varje element i en sekvens och returnerar det maximala null-värdet Int64 .

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

Anropar en transformeringsfunktion på varje element i en sekvens och returnerar det maximala null-värdet Single .

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

Anropar en transformeringsfunktion på varje element i en sekvens och returnerar det maximala Single värdet.

Max<TSource>(IEnumerable<TSource>)

Returnerar det maximala värdet i en allmän sekvens.

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

Anropar en transformeringsfunktion på varje element i en allmän sekvens och returnerar det lägsta resulterande värdet.

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

Anropar en transformeringsfunktion på varje element i en sekvens och returnerar minimivärdet Decimal .

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

Anropar en transformeringsfunktion på varje element i en sekvens och returnerar minimivärdet Double .

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

Anropar en transformeringsfunktion på varje element i en sekvens och returnerar minimivärdet Int32 .

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

Anropar en transformeringsfunktion på varje element i en sekvens och returnerar minimivärdet Int64 .

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

Anropar en transformeringsfunktion på varje element i en sekvens och returnerar det lägsta null-värdet Decimal .

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

Anropar en transformeringsfunktion på varje element i en sekvens och returnerar det lägsta null-värdet Double .

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

Anropar en transformeringsfunktion på varje element i en sekvens och returnerar det lägsta null-värdet Int32 .

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

Anropar en transformeringsfunktion på varje element i en sekvens och returnerar det lägsta null-värdet Int64 .

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

Anropar en transformeringsfunktion på varje element i en sekvens och returnerar det lägsta null-värdet Single .

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

Anropar en transformeringsfunktion på varje element i en sekvens och returnerar minimivärdet Single .

Min<TSource>(IEnumerable<TSource>)

Returnerar minimivärdet i en allmän sekvens.

Nodes<T>(IEnumerable<T>)

Returnerar en samling av de underordnade noderna i varje dokument och element i källsamlingen.

OfType<TResult>(IEnumerable)

Filtrerar elementen i en IEnumerable baserat på en angiven typ.

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

Sorterar elementen i en sekvens i stigande ordning med hjälp av en angiven jämförelse.

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

Sorterar elementen i en sekvens i stigande ordning enligt en nyckel.

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

Sorterar elementen i en sekvens i fallande ordning med hjälp av en angiven jämförelse.

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

Sorterar elementen i en sekvens i fallande ordning enligt en nyckel.

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

Lägger till ett värde i början av sekvensen.

Remove<T>(IEnumerable<T>)

Tar bort varje nod i källsamlingen från den överordnade noden.

Reverse<TSource>(IEnumerable<TSource>)

Invertera ordningen på elementen i en sekvens.

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

Projicerar varje element i en sekvens i ett nytt formulär genom att införliva elementets index.

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

Projicerar varje element i en sekvens till ett nytt formulär.

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

Projicerar varje element i en sekvens till en IEnumerable<T>, jämnar ut de resulterande sekvenserna i en sekvens och anropar en resultatväljarefunktion på varje element däri.

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

Projicerar varje element i en sekvens till en IEnumerable<T>, jämnar ut de resulterande sekvenserna i en sekvens och anropar en resultatväljarefunktion på varje element däri. Indexet för varje källelement används i den mellanliggande projekterade formen av det elementet.

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

Projicerar varje element i en sekvens till en IEnumerable<T> och jämnar ut de resulterande sekvenserna i en sekvens.

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

Projicerar varje element i en sekvens till en IEnumerable<T>, och jämnar ut de resulterande sekvenserna i en sekvens. Indexet för varje källelement används i den projekterade formen av det elementet.

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

Avgör om två sekvenser är lika med genom att jämföra deras element med hjälp av en angiven IEqualityComparer<T>.

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

Avgör om två sekvenser är lika med genom att jämföra elementen med hjälp av standardjämlikhetsjämföraren för deras typ.

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

Returnerar det enda elementet i en sekvens som uppfyller ett angivet villkor och genererar ett undantag om mer än ett sådant element finns.

Single<TSource>(IEnumerable<TSource>)

Returnerar det enda elementet i en sekvens och genererar ett undantag om det inte finns exakt ett element i sekvensen.

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

Returnerar det enda elementet i en sekvens som uppfyller ett angivet villkor eller ett standardvärde om det inte finns något sådant element. den här metoden utlöser ett undantag om fler än ett element uppfyller villkoret.

SingleOrDefault<TSource>(IEnumerable<TSource>)

Returnerar det enda elementet i en sekvens eller ett standardvärde om sekvensen är tom. den här metoden utlöser ett undantag om det finns fler än ett element i sekvensen.

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

Kringgår ett angivet antal element i en sekvens och returnerar sedan de återstående elementen.

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

Returnerar en ny uppräkningsbar samling som innehåller elementen från source med de sista count elementen i källsamlingen som utelämnas.

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

Kringgår element i en sekvens så länge ett angivet villkor är sant och returnerar sedan de återstående elementen.

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

Kringgår element i en sekvens så länge ett angivet villkor är sant och returnerar sedan de återstående elementen. Elementets index används i logiken i predikatfunktionen.

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

Beräknar summan av sekvensen med Decimal värden som hämtas genom att anropa en transformeringsfunktion på varje element i indatasekvensen.

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

Beräknar summan av sekvensen med Double värden som hämtas genom att anropa en transformeringsfunktion på varje element i indatasekvensen.

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

Beräknar summan av sekvensen med Int32 värden som hämtas genom att anropa en transformeringsfunktion på varje element i indatasekvensen.

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

Beräknar summan av sekvensen med Int64 värden som hämtas genom att anropa en transformeringsfunktion på varje element i indatasekvensen.

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

Beräknar summan av sekvensen med null-värden Decimal som erhålls genom att anropa en transformeringsfunktion på varje element i indatasekvensen.

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

Beräknar summan av sekvensen med null-värden Double som erhålls genom att anropa en transformeringsfunktion på varje element i indatasekvensen.

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

Beräknar summan av sekvensen med null-värden Int32 som erhålls genom att anropa en transformeringsfunktion på varje element i indatasekvensen.

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

Beräknar summan av sekvensen med null-värden Int64 som erhålls genom att anropa en transformeringsfunktion på varje element i indatasekvensen.

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

Beräknar summan av sekvensen med null-värden Single som erhålls genom att anropa en transformeringsfunktion på varje element i indatasekvensen.

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

Beräknar summan av sekvensen med Single värden som hämtas genom att anropa en transformeringsfunktion på varje element i indatasekvensen.

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

Returnerar ett angivet antal sammanhängande element från början av en sekvens.

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

Returnerar en ny uppräkningsbar samling som innehåller de sista count elementen från source.

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

Returnerar element från en sekvens så länge ett angivet villkor är sant.

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

Returnerar element från en sekvens så länge ett angivet villkor är sant. Elementets index används i logiken i predikatfunktionen.

ToArray<TSource>(IEnumerable<TSource>)

Skapar en matris från en IEnumerable<T>.

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

Skapar en Dictionary<TKey,TValue> från en IEnumerable<T> enligt en angiven nyckelväljare, en jämförelsefunktion och en elementväljare.

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

Skapar en Dictionary<TKey,TValue> från en IEnumerable<T> enligt angivna funktioner för nyckelväljare och elementväljare.

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

Skapar en Dictionary<TKey,TValue> från en IEnumerable<T> enligt en angiven nyckelväljare och nyckeljäxare.

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

Skapar en Dictionary<TKey,TValue> från en IEnumerable<T> enligt en angiven nyckelväljare.

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

Skapar en HashSet<T> från en IEnumerable<T> med hjälp av comparer för att jämföra nycklar.

ToHashSet<TSource>(IEnumerable<TSource>)

Skapar en HashSet<T> från en IEnumerable<T>.

ToImmutableArray<TSource>(IEnumerable<TSource>)

Skapar en oföränderlig matris från den angivna samlingen.

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

Räknar upp och transformerar en sekvens och skapar en oföränderlig ordlista med dess innehåll med hjälp av de angivna nyckel- och värdejäxorna.

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

Räknar upp och transformerar en sekvens och skapar en oföränderlig ordlista med dess innehåll med hjälp av den angivna nyckeljäxaren.

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

Räknar upp och transformerar en sekvens och skapar en oföränderlig ordlista med dess innehåll.

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

Konstruerar en oföränderlig ordlista baserat på en viss omvandling av en sekvens.

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

Konstruerar en oföränderlig ordlista från en befintlig samling element och tillämpar en transformeringsfunktion på källnycklarna.

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

Räknar upp en sekvens, skapar en oföränderlig hashuppsättning av innehållet och använder den angivna likhetsjämföraren för den angivna typen.

ToImmutableHashSet<TSource>(IEnumerable<TSource>)

Räknar upp en sekvens och skapar en oföränderlig hashuppsättning med dess innehåll.

ToImmutableList<TSource>(IEnumerable<TSource>)

Räknar upp en sekvens och skapar en oföränderlig lista över dess innehåll.

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

Räknar upp och transformerar en sekvens och skapar en oföränderlig sorterad ordlista med dess innehåll med hjälp av de angivna nyckel- och värdejäxorna.

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

Räknar upp och transformerar en sekvens och skapar en oföränderlig sorterad ordlista med dess innehåll med hjälp av den angivna nyckeljäxaren.

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

Räknar upp och transformerar en sekvens och skapar en oföränderlig sorterad ordlista med dess innehåll.

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

Räknar upp en sekvens, skapar en oföränderlig sorterad uppsättning av dess innehåll och använder den angivna jämförelsen.

ToImmutableSortedSet<TSource>(IEnumerable<TSource>)

Räknar upp en sekvens och skapar en oföränderlig sorterad uppsättning av dess innehåll.

ToList<TSource>(IEnumerable<TSource>)

Skapar en List<T> från en IEnumerable<T>.

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

Skapar en Lookup<TKey,TElement> från en IEnumerable<T> enligt en angiven nyckelväljare, en jämförelsefunktion och en elementväljare.

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

Skapar en Lookup<TKey,TElement> från en IEnumerable<T> enligt angivna funktioner för nyckelväljare och elementväljare.

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

Skapar en Lookup<TKey,TElement> från en IEnumerable<T> enligt en angiven nyckelväljare och nyckeljäxare.

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

Skapar en Lookup<TKey,TElement> från en IEnumerable<T> enligt en angiven nyckelväljare.

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

Skapar uppsättningen union av två sekvenser med hjälp av en angiven IEqualityComparer<T>.

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

Skapar uppsättningsunionen med två sekvenser med hjälp av standardjämförlikningsjämföraren.

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

Filtrerar en sekvens med värden baserat på ett predikat.

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

Filtrerar en sekvens med värden baserat på ett predikat. Varje elements index används i logiken i predikatfunktionen.

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

Tillämpar en angiven funktion på motsvarande element i två sekvenser, vilket ger en sekvens av resultaten.

Gäller för

Trådsäkerhet

Alla implementeringar av det här gränssnittet måste göra det möjligt för alla medlemmar i det här gränssnittet att användas samtidigt från flera trådar.

Se även