Если вы получили вашу строку в переменной, вы должны выполнить интерполяцию самостоятельно
Для этого вам нужно найти все заполнители и заменить их значение.Вы можете сделать это с помощью регулярного выражения (может быть упрощено, если заполнитель может начинаться с цифр)
{(?<placeholder>[a-z_][a-z0-9_]*?)}
Следующий метод сделает эту замену:
public static string Replace(string input, Dictionary<string, object> replacement)
{
var regex = new Regex("{(?<placeholder>[a-z_][a-z0-9_]*?)}",
RegexOptions.Compiled | RegexOptions.IgnoreCase);
return regex.Replace(input, m =>
{
var key = m.Groups["placeholder"].Value;
if (replacement.TryGetValue(key, out var value))
return value.ToString();
throw new Exception($"Unknown key {key}");
});
}
Использование:
var input = "Insert into Emp(Id,Name,Number,Address) values({Id},\"Abc\",{Number},{Address});";
var replaces = new Dictionary<string, object>
{
{"Id", 123},
{ "Number", 55668878},
{"Address", "\"test address\"" },
};
var result = Replace(input, replaces);
Console.WriteLine(result);
Выход:
Вставить в Emp (идентификатор, имя, номер, адрес) значения (123, «Abc», 55668878, «тестовый адрес»);