Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Enumerable.Concat<TSource>-Methode: (IEnumerable<TSource>, IEnumerable<TSource>)

 

Veröffentlicht: Oktober 2016

Verkettet zwei Sequenzen.

Namespace:   System.Linq
Assembly:  System.Core (in System.Core.dll)

public static IEnumerable<TSource> Concat<TSource>(
	this IEnumerable<TSource> first,
	IEnumerable<TSource> second
)

Parameter

first
Type: System.Collections.Generic.IEnumerable<TSource>

Die erste zu verkettende Sequenz.

second
Type: System.Collections.Generic.IEnumerable<TSource>

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

Rückgabewert

Type: System.Collections.Generic.IEnumerable<TSource>

Eine IEnumerable<T> die die verketteten Elemente der zwei Eingabesequenzen enthält.

Typparameter

TSource

Der Typ der Elemente der Eingabesequenzen.

Exception Condition
ArgumentNullException

first oder second ist null.

Diese Methode wird mit verzögerter Ausführung implementiert. Der sofortige Rückgabewert ist ein Objekt, das alle Informationen gespeichert hat, die zum Ausführen der Aktion erforderlich sind. Die von dieser Methode dargestellte Abfrage wird nicht ausgeführt, bis das Objekt aufgelistet wird, entweder direkt durch Aufrufen der GetEnumerator-Methode oder mithilfe von foreach in Visual C# oder For Each in Visual Basic.

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

Im folgenden Codebeispiel wird veranschaulicht, wie Sie Concat<TSource>(IEnumerable<TSource>, IEnumerable<TSource>) um zwei Sequenzen zu verketten.

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 zweier Sequenzen ist das Erstellen einer Auflistung, z. B. ein Array von Sequenzen und anschließend Anwenden der SelectMany<TSource, TResult> -Methode, und übergeben sie die Identity-Selektor-Funktion. Das folgende Beispiel zeigt diese Verwendung von SelectMany<TSource, TResult>.

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

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 3.5
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1
Zurück zum Anfang
Anzeigen: