c # создать строку универсального параметра произвольной длины, например, ?,?,? - PullRequest
2 голосов
/ 30 марта 2010

Я знаю, что забыл вспомнить, как это сделать, и уже поздно.

Я хочу изящно построить список заполнителей для команды sql munged.

Есть команда с произвольным количеством параметров, необходимо построить ?,?,?

Я упоминал, что это был мокрый мозговой пердеть? вот что получилось:

Вы можете заставить меня чувствовать себя более идиотом, если вы просто помните меня, что я забываю. ; -)


Хорошо, похоже, я должен называть это ночью.

Оба вы, ребята, подтвердили, что я делал, прежде чем уйти в глубокий конец.

Это мой список имен,

string names = string.Join(",", _command.Parameters.Cast<SQLiteParameter>().Select(p => p.ParameterName).ToArray());

И я только что заменил p.Name на '?'

string vals = string.Join(",", _command.Parameters.Cast<object>().Select(p => "?").ToArray());

Но по какой-то причине я не одобрил.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 30 марта 2010

Ну, это напрашивается само собой:

string x = string.Join(",", Enumerable.Repeat("?", count).ToArray());

В .NET 4 это можно немного упростить, так как string.Join имеет новые перегрузки:

string x = string.Join(",", Enumerable.Repeat("?", count));

С другой стороны, я бы соблазнился сделать это с помощью цикла:

StringBuilder builder = new StringBuilder();
for (int i = 0; i < count; i++)
{
    builder.Append("?,");
}
builder.Length--; // Remove trailing ,
return builder.ToString();

В любом случае я бы назвал это отдельным методом, поэтому краткость вряд ли будет иметь значение.

0 голосов
/ 30 марта 2010

В соответствии с ответом @ Джона:

string.Join(",", _command.Parameters.Cast<object>().Select(p => "?").ToArray())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...