检索在where子句中传递整数列表的所有记录

本文关键字:列表 记录 整数 where 子句 检索 | 更新日期: 2023-09-27 18:03:11

请帮我修复下面这个命令文本"query"的语法。我想传递一个整数列表"int"来检索与它们匹配的所有行。

private void(List<int>ints)
{     
     // some variables  
        string query =
                    string.Format(
                       "SELECT * FROM " +  table +
                       " WHERE SubId={0} AND RouteID IN({1})",
                       SubId,
                       ints
                       );
       // more stuff
 }

检索在where子句中传递整数列表的所有记录

如果您想要这样格式化int列表,则需要在两者之间添加逗号:

string.Format(
    "SELECT * FROM " +  table +
    " WHERE SubId={0} AND RouteID IN({1})",
    SubId,
    string.Join(",", ints)
);

假设所有内容都是int,没有来自用户输入的内容,并且列表不太长,这应该可以正常工作。但是,您应该强烈考虑改用参数化SQL。具体来说,在这种情况下,可以通过使用表值参数大大改进查询。