Queryable.Concat<TSource> Method (IQueryable<TSource>, IEnumerable<TSource>)
Concatenates two sequences.
Assembly: System.Core (in System.Core.dll)
public static IQueryable<TSource> Concat<TSource>( this IQueryable<TSource> source1, IEnumerable<TSource> source2 )
Parameters
- source1
-
Type:
System.Linq.IQueryable<TSource>
The first sequence to concatenate.
- source2
-
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
- TSource
The type of the elements of the input sequences.
| Exception | Condition |
|---|---|
| ArgumentNullException | 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 = cats.AsQueryable() .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
Available since 8
.NET Framework
Available since 3.5
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.1
Windows Phone
Available since 8.1