/ / Obtenir une valeur unique d'un tableau d'objets par index - c #, tableaux, itération

Obtenir une valeur unique d'un tableau d'objets par index - c #, tableaux, itération

Il me manque quelque chose d’évident, et j’ai besoin d’une nouvelle perspective.

Je passe un paramètre de type objet []. Je souhaite extraire l’élément du tableau et affecter sa valeur à une autre variable, dans la mesure où je parcours une autre liste:

private void PopulateValues(List<SqlParameters> parameters, object[] parameterValues) {
int index = 0;
foreach(var parameter in parameters) {
parameter.Value = parameterValues[index];
index++;
}

Essayez autant que je puisse, le paramètre.Valeur est défini sur le tableau d’objets plutôt que sur la valeur de cet objet à la position i.

Qu'est-ce que j'oublie ici? Existe-t-il un moyen différent d’obtenir la valeur d’objet dans un tableau d’objets autrement que par index / position?

Ok, voici ce que je fais.

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;
}

Il semble comme ça devrait travailler, alors je pense que je vais revenir en arrière et enquêter sur ce que je suis en train de passer. Peut-être suis-je en train de passer un tableau de tableaux ou de faire autre chose d’étrange.

Réponses:

0 pour la réponse № 1

Je l'ai trouvé Je faisais quelque chose de bizarre.

J'envoyais les parametersValues ​​sous forme de liste de la façon suivante:

CreateStoredProcedureCommand("spName", pContext.SqlParameters.Select(b=>b.Value).ToList())

Changé à ToArray () et cela a fonctionné.