c#创建任意长度的通用参数字符串,例如?,?,?

时间:2010-03-30 06:26:28

标签: c# string

我知道我忘记了如何做到这一点而且已经很晚了。

我希望以优雅的方式为munged sql命令构建一个占位符列表。

拥有包含任意数量参数的命令,需要构建?,?,?

我是否提到它是湿脑屁?这就是出现的结果:

如果你只记得我忘记了什么,欢迎你让我觉得自己更像一个白痴。 ; - )


好的,看起来我应该叫它一晚。

你们两个人在离开深渊之前都证实了我在做什么。

这是我的名单,

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 个答案:

答案 0 :(得分:2)

嗯,这表明了自己:

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();

无论哪种方式,我都会把它放在一个单独的方法中,所以简洁性不太重要。

答案 1 :(得分:0)

按照@ Jon的回答:

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