Я думаю, что лучший способ - это отправить массив как Табличный параметр
Как передать массив в SP из MVC (любой код c #).В вашем случае это массив int[]
, верно?
public static DataTable ConvertIntArrayToDataTable(IEnumerable<int> array, bool AllowNull = false)
{
var dt = new DataTable();
dt.Columns.Add(new DataColumn("Value", typeof(int)) { AllowDBNull = AllowNull });
foreach(var i in array)
dt.Rows.Add(i));
return dt;
}
Вы также должны реализовать Определяемый пользователем тип таблицы
CREATE TYPE IntArray AS TABLE
(
Value int not null
)
Создать процедуру, которая принимаетэтот параметр:
CREATE PROCEDURE YourProc
@DataArray IntArray READONLY
AS
BEGIN
SELECT Value FROM @DataArray
END
и, наконец, вызовите процесс с подходящим параметром:
void CallProc(int[] array)
{
// assuming there is exisis already created connection and command named sqlCommand
sqlCommand.CommandText = "YourProc";
sqlCommand.CommandType = CommandType.StoredProcedure;
sqlCommand.Parameters.Clear();
sqlCommand.AddWithValue("@DataArray", ConvertIntArrayToDataTable(array));
sqlCommand.ExecuteNonQuery();
}