Auf Englisch lesen

Freigeben über


Enumerable.Concat<TSource> Methode

Definition

Verkettet zwei Sequenzen

C#
public static System.Collections.Generic.IEnumerable<TSource> Concat<TSource> (this System.Collections.Generic.IEnumerable<TSource> first, System.Collections.Generic.IEnumerable<TSource> second);

Typparameter

TSource

Der Typ der Elemente der Eingabesequenzen.

Parameter

first
IEnumerable<TSource>

Die erste zu verkettende Sequenz.

second
IEnumerable<TSource>

Die Sequenz, die mit der ersten Sequenz verkettet werden soll.

Gibt zurück

IEnumerable<TSource>

Ein IEnumerable<T>, das die verketteten Elemente der beiden Eingabesequenzen enthält.

Ausnahmen

first oder second ist null.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie Concat<TSource>(IEnumerable<TSource>, IEnumerable<TSource>) zwei Sequenzen miteinander verkettet werden.

C#
class Pet
{
    public string Name { get; set; }
    public int Age { get; set; }
}

static Pet[] GetCats()
{
    Pet[] cats = { new Pet { Name="Barley", Age=8 },
                   new Pet { Name="Boots", Age=4 },
                   new Pet { Name="Whiskers", Age=1 } };
    return cats;
}

static Pet[] GetDogs()
{
    Pet[] dogs = { new Pet { Name="Bounder", Age=3 },
                   new Pet { Name="Snoopy", Age=14 },
                   new Pet { Name="Fido", Age=9 } };
    return dogs;
}

public static void ConcatEx1()
{
    Pet[] cats = GetCats();
    Pet[] dogs = GetDogs();

    IEnumerable<string> query =
        cats.Select(cat => cat.Name).Concat(dogs.Select(dog => dog.Name));

    foreach (string name in query)
    {
        Console.WriteLine(name);
    }
}

// This code produces the following output:
//
// Barley
// Boots
// Whiskers
// Bounder
// Snoopy
// Fido

Eine alternative Möglichkeit zum Verketten von zwei Sequenzen besteht darin, eine Auflistung, z. B. ein Array, von Sequenzen zu erstellen und dann die SelectMany -Methode anzuwenden und die Identitätsauswahlfunktion zu übergeben. Im folgenden Beispiel wird diese Verwendung von SelectManyveranschaulicht.

C#
Pet[] cats = GetCats();
Pet[] dogs = GetDogs();

IEnumerable<string> query =
    new[] { cats.Select(cat => cat.Name), dogs.Select(dog => dog.Name) }
    .SelectMany(name => name);

foreach (string name in query)
{
    Console.WriteLine(name);
}

// This code produces the following output:
//
// Barley
// Boots
// Whiskers
// Bounder
// Snoopy
// Fido

Hinweise

Diese Methode wird mithilfe der verzögerten Ausführung implementiert. Der Sofortige Rückgabewert ist ein Objekt, das alle Informationen speichert, die zum Ausführen der Aktion erforderlich sind. Die von dieser Methode dargestellte Abfrage wird erst ausgeführt, wenn das Objekt entweder durch direktes Aufrufen der GetEnumerator -Methode oder mithilfe foreach von in C# oder For Each in Visual Basic aufgezählt wird.

Die Concat<TSource>(IEnumerable<TSource>, IEnumerable<TSource>) -Methode unterscheidet sich von der Union -Methode, da die Concat<TSource>(IEnumerable<TSource>, IEnumerable<TSource>) -Methode alle ursprünglichen Elemente in den Eingabesequenzen zurückgibt. Die Union Methode gibt nur eindeutige Elemente zurück.

Gilt für:

Produkt Versionen
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0