转换整数数组以在SQL"IN"子句中使用

AJM*_*AJM 8 c# sql arrays

当然有一个框架方法给出一个整数数组,字符串等将它们转换成一个可以在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)添加了一种新方法.


the*_*oop 5

如果您无权访问.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


SLa*_*aks 5

您可以使用此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.