Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Método Enumerable.Concat<TSource>(IEnumerable<TSource>, IEnumerable<TSource>)

 

Publicado: octubre de 2016

Concatena dos secuencias.

Espacio de nombres:   System.Linq
Ensamblado:  System.Core (en System.Core.dll)

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

Parámetros

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

Primera secuencia que se va a concatenar.

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

Secuencia que se va a concatenar con la primera secuencia.

Valor devuelto

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

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

Parámetros de tipo

TSource

Tipo de los elementos de las secuencias de entrada.

Exception Condition
ArgumentNullException

El valor de first o second es null.

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 se enumera el objeto llamando a su GetEnumerator método directamente o mediante foreach en Visual C# o For Each en Visual Basic.

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

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

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 manera alternativa de concatenar dos secuencias es construir una colección, por ejemplo una matriz de secuencias y, a continuación, aplicar el SelectMany<TSource, TResult> método, pasando la función del selector de identidad. En el ejemplo siguiente se muestra este uso de 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

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 3.5
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Windows Phone
Disponible desde 8.1
Volver al principio
Mostrar: