well you can go with Alexander Fedorenko example, but if you don't want to create any temp tables, you can use output xml parameter to pass your ids:
declare @stmt nvarchar(max), @Data xml, @searchstring nvarchar(max)
select @stmt = '
select @Data = (
select id
from Table1
where ' + @searchstring + '
for xml raw(''Data'')
)
'
exec sp_executesql
@stmt = @stmt,
@params = N'@Data xml output',
@Data = @Data output
select
T.C.value('@id', 'int') as id
from @Data.nodes('Data') as T(C)