从一行中的字符串列表构建SQL“ here in”语句?
技术问答
190 人阅读
|
0 人回复
|
2023-09-13
|
我有一个List(Of String),它对应于我们数据库表中的“类型”。
7 I5 C' S9 z: j. C/ a( U我们正在使用DB2 ADO.NET提供程序,而我的最终查询需要看起来像这样:4 |; W. d; V1 |) Z
select * from table where type in (@type1, @type2, @type3, @type4)
5 v. C$ p) q% c: }* F/ k过去,我使用ForEach循环构建了查询参数/主机变量的列表,但是我真的很想找出一种在一行中构建它们的方法。当然,我可以连接所有字符串,但是加上“0 e2 e0 n" m: U- v' x: q! G
@”和递增数字会让我头疼。
. S0 ]8 Q3 m2 \; ?4 }有人对如何执行此操作有任何想法吗?
# ]# M t( u, `' _9 y+ _4 g , E [: [. K- s k/ G
解决方案:+ ]4 B5 Z9 J* N2 q
6 i9 d4 d7 z. {2 P7 D7 C1 M
6 l/ f0 U/ f. k5 k# x! D& N* P
5 c# T# H- A# n- F [* s9 D! t 不会像这样的工作吗?
! l4 z# _1 X" j3 `% Avar inList = "(" + string.Join(", ", typeList.Select(t => "@" + t)) + ")";; O* }: D6 }& l1 x
编辑
4 { A3 L0 B- t1 P根据您的评论,这个怎么样?& ~! Z' ~4 E6 g& o
var inList = "(" +
& M% z# u* z5 E2 s& {) G string.Join(", ", Enumerable.Range(1, argCount).Select(i +> "@type" + i)) + X# [5 a& }4 R' r* I+ @! G+ p; j$ f( k( j2 n
")"; |
|
|
|
|
|