Die VB.NET-Methode String.Join(separator, stringArray)
ähnelt der implodierten PHP- Methode , jedoch werden alle Nullelemente im Array durch eine leere Zeichenfolge ersetzt, sodass c:
Dim myArray() as String = { "a", null, "c" }
Console.WriteLine(String.Join(", ", myArray));
// Prints "a, , c"
Gibt es eine einfache Möglichkeit, eine Reihe von Zeichenfolgen mit einem Trennzeichen zu verketten, das leere Zeichenfolgen ignoriert?
Ich muss nicht unbedingt Arrays oder String.Join oder irgendetwas anderes verwenden. Ich brauche nur die folgenden Transformationen:
("a", "b", "c") --> "a, b, c"
("a", null, "c") --> "a, c"
Antworten:
VB.NET
String.Join(",", myArray.Where(Function(s) Not String.IsNullOrEmpty(s)))
C #
String.Join(",", myArray.Where(s => !string.IsNullOrEmpty(s)))
quelle
Array.FindAll(myArray, Function(s) Not String.IsNullOrEmpty(s))
Können Sie entweder Ihre Antwort ändern oder dieWhere
Aussage erklären ?Where
Methode ist vonSystem.Linq
, msdn.microsoft.com/en-us/library/bb534803.aspxfür C # ==>
String.Join(",", arr.Where(s => !String.IsNullOrEmpty(s)));
quelle
So tun Sie dies in .NET 2.0 (kein LINQ), z. B. für SQL-Server ReportingServices, ohne eine Funktion dafür schreiben zu müssen:
VB.NET
C # (für diejenigen, die von Google landen und nicht nach VB.NET suchen)
Dies setzt voraus, dass die Zeichenrücktaste in Ihren Zeichenfolgen nicht vorkommt (sollte normalerweise wahr sein, da Sie dieses Zeichen nicht einfach über die Tastatur eingeben können).
Wenn Sie die Werte aus einer Datenbank abrufen, ist dies sogar noch einfacher, da Sie dies direkt in SQL tun können:
PostgreSQL & MySQL:
Und selbst mit dem herrlichen MS-SQL-Server ist es möglich (PS: das ist Sarkasmus):
quelle
Versuche Folgendes:
quelle
Dies funktioniert gut für VB.NET
Join(*yourArray*.Where(Function(s) Not String.IsNullOrEmpty(s)).ToArray(), *yourDelimiter*)
quelle