检索通过where子句中的int列表的所有记录

时间:2015-07-17 18:06:05

标签: c# sql-server

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

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
 }

1 个答案:

答案 0 :(得分:2)

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

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

假设一切都是int,没有任何内容来自用户输入,并且列表不会太长,这应该可以正常工作。但是,您应该强烈考虑转向参数化SQL。具体来说,在这种情况下,您可以使用table-valued parameter来大大改善查询。