В C # 6 появилась новая функция: интерполированные строки.
Они позволяют вставлять выражения прямо в код, а не полагаться на индексы:
string s = string.Format("Adding \"{0}\" and {1} to foobar.", x, this.Y());
становится:
string s = $"Adding \"{x}\" and {this.Y()} to foobar.";
Однако у нас есть много строк в нескольких строках, использующих дословные строки (в основном операторы SQL), например:
string s = string.Format(@"Result...
Adding ""{0}"" and {1} to foobar:
{2}", x, this.Y(), x.GetLog());
Возврат их к обычным строкам кажется беспорядочным:
string s = "Result...\r\n" +
$"Adding \"{x}\" and {this.Y()} to foobar:\r\n" +
x.GetLog().ToString();
Как использовать вместе дословные и интерполированные строки?
3
Если это действительно о строках SQL, есть ли причина, по которой вы вместо этого не используете параметризованные запросы?
—
svick
«У нас есть много строк в нескольких строках, использующих дословные строки (в основном операторы SQL)» звучит так, как будто у вас есть много строк SQL, допускающих атаки SQL-инъекций.
—
Cetin Basoz
@svick мы, все вводимые пользователем параметры параметризованы. Тем не менее, мы по-прежнему активно используем динамический SQL, поскольку мы динамически создаем SQL для наших объектов в коде.
—
Кейт
@CetinBasoz мы не делаем - весь пользовательский ввод параметризован. Есть много обстоятельств, когда у вас есть динамический SQL - например, LINQ или любая другая структура сопоставления объектов.
—
Кит