Instead of using dynamic SQL, you can transform the list of values ( 'a, b, c, ... ') into a Table, and then make a JOIN.
Something like this:
select f1, f2, f3,
from YourTable,
fn_Transform(@paramListOfValues) as Values
WHERE YourTable.field = Values.field
There are a lot of articles about this idea in this website and in the www.
For example:
http://qa.sqlservercentral.com/articles/T-SQL/63003/
You can make searchs with these words:
'Array in SQL'
'Tally Table'