String.Join(Of T) Method (String, IEnumerable(Of 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)

'Declaration
<ComVisibleAttribute(False)> _
Public Shared Function Join(Of T) ( _
	separator As String, _
	values As IEnumerable(Of T) _
) As String

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(Of 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.

ExceptionCondition
ArgumentNullException

values is Nothing.

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

Join(Of T)(String, IEnumerable(Of T)) is a convenience method that lets you concatenate each member of an IEnumerable(Of T) collection without first converting them to strings. The string representation of each object in the IEnumerable(Of 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(Of 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(Of T)(String, IEnumerable(Of T)) method.


Imports System.Collections.Generic

Public Class Animal
   Public Kind As String
   Public Order As String

   Public Sub New(ByVal kind As String, ByVal order As String)
      Me.Kind = kind
      Me.Order = order
   End Sub

   Public Overrides Function ToString() As String
      Return Me.Kind
   End Function
End Class

Module Example
   Public Sub Demo(ByVal outputBlock As System.Windows.Controls.TextBlock)
      Dim animals As New List(Of Animal)
      animals.Add(New Animal("Squirrel", "Rodent"))
      animals.Add(New Animal("Gray Wolf", "Carnivora"))
      animals.Add(New Animal("Capybara", "Rodent"))
      Dim output As String = String.Join(" ", animals.Where(Function(animal) _
                                           animal.Order = "Rodent"))
      outputBlock.Text &= output & vbCrLf
   End Sub
End Module
' 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(Of T) object of type integer, which it then passes to the Join(Of T)(String, IEnumerable(Of T)) method.


Imports System.Collections.Generic

Module Example
   Public Sub Demo(ByVal outputBlock As System.Windows.Controls.TextBlock)
      Dim maxPrime As Integer = 100
      Dim primes As List(Of Integer) = GetPrimes(maxPrime)
      outputBlock.Text += String.Format("Primes less than {0}:", maxPrime) & vbCrLf
      outputBlock.Text += String.Format("   {0}", String.Join(" ", primes)) & vbCrLf
   End Sub

   Private Function GetPrimes(ByVal maxPrime As Integer) As List(Of Integer)
      Dim values(maxPrime) As Integer
      ' Use Sieve of Erathsthenes to determine prime numbers.
      For ctr As Integer = 2 To _
                           CInt(Math.Ceiling(Math.Sqrt(values.GetUpperBound(0))))
         If CInt(values.GetValue(ctr)) = 1 Then Continue For

         For multiplier As Integer = ctr To maxPrime \ 2
            If ctr * multiplier <= maxPrime Then values.SetValue(1, ctr * multiplier)
         Next
      Next

      Dim primes As New System.Collections.Generic.List(Of Integer)
      For ctr As Integer = 2 To values.GetUpperBound(0)
         If CInt(values.GetValue(ctr)) = 0 Then primes.Add(ctr)
      Next
      Return primes
   End Function
End Module
' 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


Silverlight

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.

Date

History

Reason

January 2011

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

Customer feedback.

Community Additions

ADD
Show: