从一行中的字符串列表构建SQL"where in"语句?

Tay*_*ell 6 c# sql vb.net

我有一个List(Of String),对应于数据库表中的"types".

我们正在使用DB2 ADO.NET提供程序,我的最终查询需要看起来像这样:

select * from table where type in (@type1, @type2, @type3, @type4)
Run Code Online (Sandbox Code Playgroud)

在过去,我使用ForEach循环构建了查询参数/主机变量列表,但我真的想找到一种方法来在一行中构建它们.当然,我可以加入所有字符串,但添加"@"和递增数字让我感到头疼.

任何人对如何做到这一点都有任何想法?

Str*_*ior 12

不会有这样的工作吗?

var inList = "(" + string.Join(", ", typeList.Select(t => "@" + t)) + ")";
Run Code Online (Sandbox Code Playgroud)

编辑

根据你的评论,这个怎么样?

var inList = "(" + 
    string.Join(", ", Enumerable.Range(1, argCount).Select(i +> "@type" + i)) +
    ")";
Run Code Online (Sandbox Code Playgroud)


小智 5

这就是我通常这样做的方式

string.Join(",", items.Select(i => $"'{i}'");
Run Code Online (Sandbox Code Playgroud)