Параметрированные запросы в .Net всегда выглядят следующим образом:
SqlCommand comm = new SqlCommand(@"
   SELECT * 
   FROM   Products 
   WHERE  Category_ID = @categoryid
", 
   conn);
comm.Parameters.Add("@categoryid", SqlDbType.Int);
comm.Parameters["@categoryid"].Value = CategoryID;
Но я столкнулся с кирпичной стеной, пытаясь сделать следующее:
SqlCommand comm = new SqlCommand(@"
   SELECT * 
   FROM   Products 
   WHERE  Category_ID IN (@categoryids) 
      OR  name LIKE '%@name%'
", 
   conn);
comm.Parameters.Add("@categoryids", SqlDbType.Int);
comm.Parameters["@categoryids"].Value = CategoryIDs;
comm.Parameters.Add("@name", SqlDbType.Int);
comm.Parameters["@name"].Value = Name;
Где
- CategoryID - это список номеров, разделенных запятыми "123 456 789" (без кавычек).
 - Имя - это строка, возможно с одинарными кавычками и другими плохими символами.
 
Какой правильный синтаксис для этого?