当前位置:  开发笔记 > 编程语言 > 正文

SQL选择List <string>中的值的位置

如何解决《SQL选择List<string>中的值的位置》经验,为你挑选了3个好方法。

有没有办法可以针对具有指向ArrayList或List的where子句的数据源(可能是sql,oracle或access)创建查询?

例:

Select * from Table where RecordID in (RecordIDList)

我已经看到了一些方法可以用Linq做到这一点,但如果它可以避免,我宁愿不诉诸它.



1> Andrew Hare..:

你可以用String.Join.尝试这样的事情:

String query = "select * from table where RecordId in ({0});";
String formatted = String.Format(query, String.Join(",", list.ToArray()));

作为旁注,这不会保护您免受SQL注入 - 希望此示例将指向正确的方向.


当然,在一般情况下,通过字符串连接构建SQL查询是一个坏主意,但如果RecordIds列表是强类型的整数列表,则此方法没有SQL注入的风险.

2> Amy B..:

Linq到Sql.RecordList应该是a List,而不是an ArrayList或anIList

IEnumerable query =
  from t in db.Table
  where RecordList.Any(r => t.RecordId == r)
  select t;

这将生成带参数的sql:

SELECT *
FROM Table
WHERE RecordId in (@p0, @p1, @p2, @p3, @p4)

Linq将生成所需数量的参数.某些数据库实现受限于可以接受的参数数量.SqlServer2005的限制是超过2000个参数...所以不要使用超过2000个元素的列表.



3> GordonB..:

我只是用逗号分隔的列表做了你想做的事情

Select * from Table where RecordID in (1,2,34,45,76,34,457,34)

或者结果来自单独的选择

Select * from Table where RecordID in (select recordId from otherTable where afieldtype=1)

我很确定你无法实现你所追求的目标....

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有