Leer en inglés

Compartir a través de


Enumerable.Concat<TSource> Método

Definición

Concatena dos secuencias.

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

Parámetros de tipo

TSource

Tipo de los elementos de las secuencias de entrada.

Parámetros

first
IEnumerable<TSource>

Primera secuencia que se va a concatenar.

second
IEnumerable<TSource>

Secuencia que se va a concatenar con la primera secuencia.

Devoluciones

IEnumerable<TSource>

IEnumerable<T> que contiene los elementos concatenados de las dos secuencias de entrada.

Excepciones

first o second es null.

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar Concat<TSource>(IEnumerable<TSource>, IEnumerable<TSource>) para concatenar dos secuencias.

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

Una forma alternativa de concatenar dos secuencias es construir una colección, por ejemplo, una matriz, de secuencias y, a continuación, aplicar el SelectMany método , pasarla a la función del selector de identidades. En el ejemplo siguiente se muestra este uso de SelectMany.

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

Comentarios

Este método se implementa mediante la ejecución diferida. El valor devuelto inmediato es un objeto que almacena toda la información necesaria para realizar la acción. La consulta representada por este método no se ejecuta hasta que el objeto se enumera llamando directamente a su GetEnumerator método o mediante foreach en C# o For Each en Visual Basic.

El Concat<TSource>(IEnumerable<TSource>, IEnumerable<TSource>) método difiere del Union método porque el Concat<TSource>(IEnumerable<TSource>, IEnumerable<TSource>) método devuelve todos los elementos originales de las secuencias de entrada. El Union método devuelve solo elementos únicos.

Se aplica a

Producto Versiones
.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