Попробуйте:
term = "whateverterm";
var encodeForLike = term => term.Replace("[", "[[]").Replace("%", "[%]");
string term = "%" + encodeForLike(term) + "%";
var data = conn.Query(@"
select top 25
Term as Label,
Type,
ID
from SearchTerms
WHERE Term like @term",
new { term });
В таких операторах нет ничего особенного, вы никогда не захотите, чтобы ваши параметры были внутри строковых литералов, они не будут работать, вместо этого они будут интерпретироваться как строка.
note
Жестко запрограммированный пример во втором фрагменте кода настоятельно не рекомендуется, кроме того, что он представляет собой огромную проблему с внедрением SQL-кода, он может вызвать утечку.
предостережение
Любое совпадение like
, начинающееся с подстановочного знака, не является SARGable, что означает, что оно медленное и требует сканирования индекса.