且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何将字符串列表传递给SQL C#中的in子句?

更新时间:2022-05-28 23:57:32

有两种方法可以做到这一点,一种快速而且脏(并且可能不安全,如果你的数据是动态的)并且一个复杂而干净。



快速而肮脏的是使用字符串连接:

There are two ways to do this, one quick and dirty (and probably unsafe, if your data is dynamic) and one complicated and clean.

The quick and dirty is to use string concatenation:
string rawCSV = "170801/1,170801/2,170801/3";
string ids = string.Join(",", rawCSV.Split(',').Select(s => "'" + s + "'"));

然后您可以将该字符串用作WHERE子句的一部分:

You can then use that string as part of the WHERE clause:

string sql = "SELECT MIN(value) FROM tab WHERE Id IN (" + ids" + ")";



但是......如果您的数据是动态的,这很危险 - 它让您对SQL注入完全开放,这可能会损坏或破坏您的数据库。


更好的解决方案要复杂得多。

您需要创建一个接受字符串参数的存储过程。

然后拆分它,并从中创建基于表格的数据。

见这里:在SQL IN子句中使用逗号分隔值参数字符串 [ ^ ]