Windows apps
Collapse the table of content
Expand the table of content
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

String.Join<T> Method (String, IEnumerable<T>)

Updated: January 2011

Concatenates the members of a string collection, using the specified separator between each member.

Namespace:  System
Assembly:  mscorlib (in mscorlib.dll)

public static string Join<T>(
	string separator,
	IEnumerable<T> values

Type Parameters


The type of the members of values.


Type: System.String
The string to use as a separator.
Type: System.Collections.Generic.IEnumerable<T>
A collection that contains the objects to concatenate.

Return Value

Type: System.String
A string that consists of the members of values delimited by the separator string. If values has no members, the method returns String.Empty.


values is null.

If separator is null, an empty string (String.Empty) is used instead. If any member of values is null, an empty string is used instead.

Join<T>(String, IEnumerable<T>) is a convenience method that lets you concatenate each member of an IEnumerable<T> collection without first converting them to strings. The string representation of each object in the IEnumerable<T> collection is derived by calling that object's ToString method.

This method is particular useful with Language-Integrated Query (LINQ) query expressions. For example, the following code defines a very simple Animal class that contains the name of an animal and the order to which it belongs. It then defines a List<T> object that contains a number of Animal objects. The Enumerable.Where extension method is called to extract the Animal objects whose Order property equals "Rodent". The result is passed to the Join<T>(String, IEnumerable<T>) method.

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

public class Animal
   public string Kind;
   public string Order;

   public Animal(string kind, string order)
      this.Kind = kind;
      this.Order = order;

   public override string ToString()
      return this.Kind;

public class Example
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
      List<Animal> animals = new List<Animal>();
      animals.Add(new Animal("Squirrel", "Rodent"));
      animals.Add(new Animal("Gray Wolf", "Carnivora"));
      animals.Add(new Animal("Capybara", "Rodent"));
      string output = String.Join(" ", animals.Where(animal =>
                      (animal.Order == "Rodent")));
      outputBlock.Text += output + "\n";
// The example displays the following output:
//      Squirrel Capybara

The following example uses the Sieve of Eratosthenes algorithm to calculate the prime numbers that are less than or equal to 100. It assigns the result to a List<T> object of type integer, which it then passes to the Join<T>(String, IEnumerable<T>) method.

using System;
using System.Collections.Generic;

public class Example
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
      int maxPrime = 101;
      List<int> primes = GetPrimes(maxPrime);
      outputBlock.Text += String.Format("Primes less than {0}:", maxPrime) + "\n";
      outputBlock.Text += String.Format("   {0}", String.Join(" ", primes)) + "\n";

   private static List<int> GetPrimes(int maxPrime)
      int[] values = new int[maxPrime + 1];
      // Use Sieve of Erathsthenes to determine prime numbers.
      for (int ctr = 2; ctr <= (int)Math.Ceiling(Math.Sqrt(values.GetUpperBound(0))); ctr++)

         if ((int)values.GetValue(ctr) == 1) continue;

         for (int multiplier = ctr; multiplier <= maxPrime / 2; multiplier++)
            if (ctr * multiplier <= maxPrime)
               values.SetValue(1, ctr * multiplier);

      List<int> primes = new List<int>();
      for (int ctr = 2; ctr <= values.GetUpperBound(0); ctr++)
         if ((int)values.GetValue(ctr) == 0)
      return primes;
// The example displays the following output:
//    Primes less than 100:
//       2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97


Supported in: 5, 4

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.




January 2011

Noted that an empty string is substituted for any null member of the collection.

Customer feedback.

Community Additions

© 2017 Microsoft