Используйте регулярное выражение для сопоставления запятой с любым окружающим пробелом и замените апостропами и запятой. Начальный апостроп для первого элемента и конечный апостроф для последнего элемента, который вы просто добавляете потом.
Метод RemoveSpacesFromList
больше не нужен, так как метод BuildList делает все это.
Protected Sub cmdGetParts_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdGetParts.Click
Dim descriptions As String = txtDescriptionList.Text
descriptions = BuildList(descriptions)
FillGrid(descriptions)
End Sub
''//Build descriptions List based on a comma separated string
Private Function BuildList(ByVal descriptions As String) As String
Return "'" + Regex.Replace(descriptions, "\s*,\s*", "','", RegexOptions.Compiled) + "'"
End Function
Примечание:
Если вы используете эту строку для построения SQL-запроса, ваше приложение широко открыто для атак с использованием SQL-инъекций. Использование параметризованных запросов является предпочтительным методом, но это может быть неудобно в вашем случае. Пользовательский ввод должен быть как минимум очищен перед использованием в запросе.
Edit:
Если адаптер использует апострофы в качестве escape-символа в строковом литерале, вы можете правильно экранировать строку следующим образом:
Private Function BuildList(ByVal descriptions As String) As String
Return "'" + Regex.Replace(descriptions.Replace("'","''"), "\s*,\s*", "','", RegexOptions.Compiled) + "'"
End Function