Вы не упомянули, какую версию SQL Server вы используете ... но предполагая, что это текущая версия, вы можете использовать функцию STRING_SPLIT:
https://docs.microsoft.com/en-us/sql/t-sql/functions/string-split-transact-sql?view=sql-server-2017
По сути, конвертируйте ваш список значений в строку с разделителями. Отправь это и раздели. В идеале вам, вероятно, следует использовать тип таблицы, но это может удовлетворить ваши потребности
Код SQL
DECLARE @Array NVARCHAR(MAX) = '0,1,2,3,4,5,6,7,8,9,10';
DECLARE @TemporaryTable TABLE (
[Value] INT
);
INSERT INTO @TemporaryTable ( [Value] )
SELECT CONVERT(INT, [value]) FROM STRING_SPLIT(@Array, ',');
SELECT [Value] FROM @TemporaryTable
List<int> lstIds = new List<int>() { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
C # код
List<int> lstIds = new List<int>() { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
использование (var connection = new SqlConnection ("Источник данных = localhost; Начальный каталог = Тестирование; Интегрированная безопасность = True;"))
{
connection.Open ();
using (var command = connection.CreateCommand())
{
command.CommandText = @"CREATE TABLE #TemporaryTable ( [Value] INT );";
command.CommandType = System.Data.CommandType.Text;
command.ExecuteNonQuery();
}
using (var command = connection.CreateCommand())
{
command.CommandText = @"INSERT INTO #TemporaryTable ( [Value] ) SELECT CONVERT(INT, [value]) FROM STRING_SPLIT(@Array, ',');";
command.CommandType = System.Data.CommandType.Text;
command.Parameters.Add(new SqlParameter("@Array", string.Join(",", lstIds)));
command.ExecuteNonQuery();
}
using (var command = connection.CreateCommand())
{
command.CommandText = @"SELECT COUNT(1) FROM #TemporaryTable";
command.CommandType = System.Data.CommandType.Text;
int count = Convert.ToInt32(command.ExecuteScalar());
}
}