Queryable.Concat<TSource> Method (IQueryable<TSource>, IEnumerable<TSource>)


The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience.

Concatenates two sequences.

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

public static IQueryable<TSource> Concat<TSource>(
	this IQueryable<TSource> source1,
	IEnumerable<TSource> source2


Type: System.Linq.IQueryable<TSource>

The first sequence to concatenate.

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

The sequence to concatenate to the first sequence.

Return Value

Type: System.Linq.IQueryable<TSource>

An IQueryable<T> that contains the concatenated elements of the two input sequences.

Type Parameters


The type of the elements of the input sequences.

Exception Condition

source1 or source2 is null.

The Concat<TSource>(IQueryable<TSource>, IEnumerable<TSource>) method generates a MethodCallExpression that represents calling Concat<TSource>(IQueryable<TSource>, IEnumerable<TSource>) itself as a constructed generic method. It then passes the MethodCallExpression to the CreateQuery<TElement>(Expression) method of the IQueryProvider represented by the Provider property of the source1 parameter.

The query behavior that occurs as a result of executing an expression tree that represents calling Concat<TSource>(IQueryable<TSource>, IEnumerable<TSource>) depends on the implementation of the type of the source1 parameter. The expected behavior is that the elements in source2 are concatenated to those of source1 to create a new sequence.

The following code example demonstrates how to use Concat<TSource>(IQueryable<TSource>, IEnumerable<TSource>) to concatenate two sequences.

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

// This method creates and returns an array of Pet objects.
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;

// This method creates and returns an array of Pet objects.
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();

    // Concatenate a collection of cat names to a
    // collection of dog names by using Concat().
    IEnumerable<string> query =
        .Select(cat => cat.Name)
        .Concat(dogs.Select(dog => dog.Name));

    foreach (string name in query)

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

Universal Windows Platform
Available since 8
.NET Framework
Available since 3.5
Portable Class Library
Supported in: portable .NET platforms
Available since 2.0
Windows Phone Silverlight
Available since 7.1
Windows Phone
Available since 8.1
Return to top