Concatenation in LINQ



Performs concatenation of two sequences and is quite similar to the Union operator in terms of its operation except of the fact that this does not remove duplicates.

Operator Description C# Query Expression Syntax VB Query Expression Syntax
Concat Two sequences are concatenated for the formation of a single one sequence. Not Applicable Not Applicable

Example of Concat - Enumerable.Concat(Of TSource) Method

C#

using System;
using System.Collections.Generic;
using System.Linq;

namespace Operators {
   class Concat {
      static void Main(string[] args) {
      
         Pet[] cats = GetCats();
         Pet[] dogs = GetDogs();

         IEnumerable<string> query = cats.Select(cat ⇒ cat.Name).Concat(dogs.Select(dog => dog.Name));

         foreach (var e in query) {
            Console.WriteLine("Name = {0} ", e);
         }

         Console.WriteLine("\nPress any key to continue.");
         Console.ReadKey();
      }

      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;
      }
   }

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

VB

Module Module1

   Sub Main()

      Dim cats As List(Of Pet) = GetCats()
      Dim dogs As List(Of Pet) = GetDogs()

      Dim list = cats.Cast(Of Pet)().Concat(dogs.Cast(Of Pet)()).ToList()

      For Each e In list
         Console.WriteLine("Name = {0}", e.Name)
      Next

      Console.WriteLine(vbLf & "Press any key to continue.")
      Console.ReadKey()
	  
   End Sub

   Function GetCats() As List(Of Pet)

      Dim cats As New List(Of Pet)

         cats.Add(New Pet With {.Name = "Barley", .Age = 8})
         cats.Add(New Pet With {.Name = "Boots", .Age = 4})
         cats.Add(New Pet With {.Name = "Whiskers", .Age = 1})

      Return cats
	  
   End Function

   Function GetDogs() As List(Of Pet)

      Dim dogs As New List(Of Pet)

         dogs.Add(New Pet With {.Name = "Bounder", .Age = 3})
         dogs.Add(New Pet With {.Name = "Snoopy", .Age = 14})
         dogs.Add(New Pet With {.Name = "Fido", .Age = 9})

      Return dogs
	  
   End Function

   Class Pet
      Public Property Name As String
      Public Property Age As Integer
   End Class
   
End Module

When the above code in C# or VB is compiled and executed, it produces the following result −

Barley 
Boots 
Whiskers 
Bounder 
Snoopy 
Fido

Press any key to continue.
linq_query_operators.htm
Advertisements