¿Por qué no usar un Parámetro con valores de tabla ?
Cree un tipo de tabla definido por el usuario DateTimes
en SQL
create type DateTimes as table
(
[Value] datetime
)
Luego modifique su procedimiento almacenado:
ALTER PROCEDURE spSelectPlacementData
(
@ClientID SMALLINT,
@SourceFileDates DateTimes readonly -- must be readonly
)
Ahora puede tratar @SourceFileDates
como una variable de tabla de solo lectura.
Al especificar su SqlCommand
parámetros, un parámetro con valores de tabla se especifica como SqlDbType.Structured
y pasó como DataTable
o DataRowcollection
. Entonces, puede completarlo así:
var sourceFileDates = new DataTable();
sourceFileDates.Columns.Add("Value", typeof(DateTime));
foreach (DateTime file in job.sourceFiles)
{
sourceFileDates.Rows.Add(file);
}
selectRunCommand.Parameters.Add(new SqlParameter {
ParameterName = "@SourceFileDates",
Value = sourceFileDates,
SqlDbType = SqlDbType.Structured // make sure you specify structured
});
Ahora todo está bien y correctamente escrito... y no tienes que hacer ningún análisis o conversión de cadenas.
Como nota al margen, también podría continuar y crear Strings
y Integers
tipos también; Te engancharás a los TVP y los usarás en todas partes.