当然有一个框架方法给出一个整数数组,字符串等将它们转换成一个可以在SQL" IN"子句中使用的列表?
例如
int[] values = {1,2,3};
Run Code Online (Sandbox Code Playgroud)
会去的
"(1,2,3)"
Run Code Online (Sandbox Code Playgroud)
Meh*_*ari 17
var inClause = "("
+ String.Join(",", values.Select(x => x.ToString()).ToArray())
+ ")";
Run Code Online (Sandbox Code Playgroud)
注意:您不再需要.ToArray()在.NET Framework 4中调用.String.Join<T>(string separator, IEnumerable<string> values)添加了一种新方法.
如果您无权访问.NET 3.5扩展方法,则可以执行以下操作:
StringBuilder sb = new StringBuilder();
sb.Append('(');
foreach (int i in values) {
sb.Append(i).Append(',');
}
// remove final ,
sb.Length -= 1;
sb.Append(')');
string inValue = sb.ToString();
Run Code Online (Sandbox Code Playgroud)
哪个适用于.NET 2
您可以使用此String.Join方法,如下所示:
var str = "(" + string.Join(", ", Array.ConvertAll(values, v => v.ToString(CultureInfo.InvariantCulture)));
Run Code Online (Sandbox Code Playgroud)
假设这values是一个数组,Array.ConvertAll应该比LINQ更有效ToArray.