Это, кажется, работа для StringBuilder
Dim sql = new StringBuilder("SELECT * FROM table WHERE ")
For m = 1 To num_array
sql.Append("type = '" & array(m, 1) & "' OR ")
Next
If num_array > 0 Then
sql.Length -= 4
End If
Однако стоит обратить особое внимание на вашу конкатенацию. Кажется, что ваш массив не содержит чисел, кроме строки, потому что вы помещаете все между одинарными кавычками, и это означает, что ваше поле типа является строкой, а не числом.
Конечно, я надеюсь, что ваш контент массива не будет напрямую вставлен вашим пользователем, иначе у вас будет большой риск безопасности под названием Sql Injection. В любом случае посмотрите, как создать параметризованный запрос.
Что-то вроде этого
Dim prms = New List(Of SqlParameter)()
Dim num_Array = 4
Dim sql = New StringBuilder("SELECT * FROM table WHERE ")
For m = 1 To num_array
sql.Append("type = @p" & m & " OR ")
prms.Add(New SqlParameter("@p" & m, array(m, 1)))
Next
If num_array > 0 Then
sql.Length -= 4
End If
Dim cmd = new SqlCommand(sql.ToString(), connection)
cmd.Parameters.AddRange(prms.ToArray())
Не делайте этого. Вместо этого используйте параметризованные запросы. в противном случае вы рискуете атаками [sql injection] (https://en.wikipedia.org/wiki/SQL_injection). –
Эти типы механизмов SQL/помощники параметров редко упрощают код – Plutonix