Puede aprovechar el hecho de que SQL Server 2008 ahora admite tipos de tablas. Puede definir un tipo de tabla y, en el lado .net, construir una DataTable
y páselo como un parámetro a su procedimiento almacenado. En el lado del SP, ese parámetro es del tipo [cualquiera que sea el tipo de tabla que haya creado] Aquí hay un ejemplo.
TotalPositions = [Some List] //of CSV List
DataTable Positions = new DataTable(); //Create the Datatype
Positions.Columns.Add("PositionID", typeof(int)); //
foreach (string sPos in TotalPositions.Split(','))
Positions.Rows.Add(int.Parse(sPos));
Luego puede agregar posiciones como un parámetro para su procedimiento almacenado
SqlParameter Param = new SqlParameter();
Param.Value = Positions
Param.SqlDbType = SqlDbType.Structured;
Param.ParameterName = @Positions
command.Parameters.Add(Param);
En su base de datos, debe definir un tipo de tabla como
CREATE TYPE [dbo].[Positions] AS TABLE(
[Position] int NULL,
)
GO
y en su procedimiento almacenado agregue
@MyPositions Positions Readonly
Ahora puede tratar @MyPositions
como una tabla en su procedimiento y compárelo.