String.Join<T> Method (String, IEnumerable<T>)
[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]
Concatenates the members of a string collection, using the specified separator between each member.
Assembly: mscorlib (in mscorlib.dll)
Type Parameters
- T
The type of the members of values.
Parameters
- separator
- Type: System.String
The string to use as a separator.
- values
- Type: System.Collections.Generic.IEnumerable<T>
A collection that contains the objects to concatenate.
Return Value
Type: System.StringA string that consists of the members of values delimited by the separator string. If values has no members, the method returns String.Empty.
| Exception | Condition |
|---|---|
| ArgumentNullException | 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) primes.Add(ctr); 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