Estou sentindo falta de algo óbvio aqui e acho que preciso de uma nova perspectiva.
Estou passando um parâmetro do tipo objeto []. Eu quero extrair o elemento dentro da matriz e atribuir seu valor a outra variável, como eu estou fazendo um loop através de outra lista:
private void PopulateValues(List<SqlParameters> parameters, object[] parameterValues) {
int index = 0;
foreach(var parameter in parameters) {
parameter.Value = parameterValues[index];
index++;
}
Por mais que eu tente, o parâmetro. O valor é definido para a matriz de objetos em vez do valor do objeto na posição i.
O que estou perdendo aqui? Existe uma maneira diferente de obter o valor do objeto dentro de uma matriz de objeto diferente de index / position?
Ok, aqui está exatamente o que estou fazendo.
protected SqlCommand CreateStoredProcedureCommand(string storedProcedureName, object[] parameterValues)
{
SqlCommand cmd = new SqlCommand(storedProcedureName, Connection)
{CommandTimeout = _commandTimeout, CommandType = CommandType.StoredProcedure};
SqlCommandBuilder.DeriveParameters(cmd);
int index = 0;
foreach(SqlParameter parameter in cmd.Parameters)
{
if (parameter.Direction == ParameterDirection.Input || parameter.Direction == ParameterDirection.InputOutput)
{
parameter.Value = parameterValues[index]
index++;
}
}
return cmd;
}
Parece assim devemos trabalho, então eu acho que vou voltar e investigar o que estou realmente passando. Talvez eu esteja passando uma matriz de matrizes ou fazendo outra coisa estranha.
Respostas:
0 para resposta № 1Encontrei. Eu estava fazendo algo estranho.
Eu estava enviando o parâmetroValores como uma lista desta forma:
CreateStoredProcedureCommand("spName", pContext.SqlParameters.Select(b=>b.Value).ToList())
Mudou para ToArray () e funcionou.