String.Join concatenates an array of strings together without checking for empty entries. This means the separator character is added twice, between non-empty items sometimes.
String[] input = {foo, null, bar}; var result = String.Join(",", input); // result == "foo,,bar"
My alternative uses the IEnumerable.Aggregate extension method, it checks for there empty entries and when it finds one doesn't add a redundant separator.
string[] input = { "foo", null, "bar" }; string result = input.Aggregate((x, y) => String.IsNullOrEmpty(y) ? x : string.Concat(x, ",", y)); // result == "foo,bar"