Queryable.Concat<TSource> Method

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 Parameters


The type of the elements of the input sequences.


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.

Usage Note

In Visual Basic and C#, you can call this method as an instance method on any object of type IQueryable<TSource>. When you use instance method syntax to call this method, omit the first parameter.


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)
               outputBlock.Text += name + "\n";

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


Supported in: 5, 4, 3

Silverlight for Windows Phone

Supported in: Windows Phone OS 7.1

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.

Community Additions