You can use a single parameter string. The user separates entries in the list with a comma. The query got a lot worse though but I have you an example of variable number of prefixes with comma separated.
I hope this helps. Its not as simple or as pretty.

In the dataset, use a similar query or proc that uses the parameter like so and it should work:
Declare @prefixes varchar(1000)
set @prefixes='abc,defg,efgh,hij,jkl,mno'
declare @sql nvarchar(max) = ''
declare @currentint int
set @currentint = 1
declare @maxint int
set @maxint = len(@prefixes) - len(replace(@prefixes, ',', '')) + 1
declare @currentcommaposition int
set @sql = 'IF OBJECT_ID(''tempdb..#tempTest'') IS NOT NULL DROP TABLE #tempTest
create table #tempTest
(
ID INT,
name varchar(100)
)
insert into #tempTest
(id,name)
select 1,''abcd''
union
select 2, ''defghijk''
union
select 3,''efghoot''
union
select 4,''hijack''
union
select 5,''jklmo''
union
select 6,''mnopoly''
union
select 7,''pqrstuv''
union
select 8,''tubool''
IF OBJECT_ID(''tempdb..#testresults'') IS NOT NULL DROP TABLE #testresults
create table #testresults
(
id int, name varchar(100)
)
declare @prefixes varchar(100) = ''' + @prefixes + ',''' + char(10) + ' declare @currentint int declare @maxint int = ' + convert(varchar(10),@maxint) + char(10)
while ( @currentint <= @maxint )
begin
set @sql = @sql + 'set @currentint = ' + convert(varchar(10),@currentint) + ' declare @suffix' + convert(varchar(2), @currentint) + ' VARCHAR(100)' + char(10)
+ 'set @suffix' + convert(varchar(2), @currentint) + '= substring(@prefixes,0,charindex('','',@prefixes))' + char(10)
+
'set @prefixes=Right(@prefixes,len(@prefixes)-charindex('','',@prefixes))' + char(10) +
'insert into #testresults (id, name)
select id, name from #temptest t where t.name like @suffix' + convert(varchar(2), @currentint) + ' + ''%''' + char(10)
+ 'if (@currentint = @maxint) begin select * from #testresults end ' + char(10)
set @currentint = @currentint + 1
end
exec sp_executesql @sql