Para hacerlo en .NET 2.0 (sin LINQ), p. para ReportingServices sin necesidad de escribir una función para ello:
C#
string a = "", b = "b", c = "", d = "d", e = "";
string lala = string.Join("/",
string.Join("\u0008", new string[] { a, b, c, d, e }).Split(new char[] { '\u0008' }, System.StringSplitOptions.RemoveEmptyEntries)
);
System.Console.WriteLine(lala);
VB.NET
Dim a As String = "", b As String = "b", c As String = "", d As String = "d", e As String = ""
Dim lala As String = String.Join("/", String.Join(vbBack, New String() {a, b, c, d, e}).Split(New Char() {ControlChars.Back}, System.StringSplitOptions.RemoveEmptyEntries))
System.Console.WriteLine(lala)
Esto supone que el retroceso carácter no está en sus cadenas (por lo general debe ser verdad, porque no puedes simplemente ingresar este caracter por teclado).
Es 'Values' una 'cadena' como' "foo | bar || baz ||| baf" '? – Michael
Y ahora introduzco un valor como "echo 'foo' | sed '/ foo/d;'" y se rompe horriblemente. –