回答

收藏

从一行中的字符串列表构建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
    ")";
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则