/ / Rufen Sie einen einzelnen Wert eines Objektarrays über Index ab - c #, Arrays, Iteration

Erhalte einen einzelnen Wert eines Objektarrays nach Index - c #, Arrays, Iteration

Ich vermisse hier offensichtlich etwas und ich denke, ich brauche eine neue Perspektive.

Ich übergebe einen Parameter vom Typ object []. Ich möchte das Element innerhalb des Arrays extrahieren und seinen Wert einer anderen Variablen zuweisen, während ich eine andere Liste durchsehe:

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

Versuchen Sie, so wie ich es könnte, der Parameter.Value wird auf das Objektarray festgelegt und nicht auf den Objektwert an Position i.

Was fehlt mir hier? Gibt es eine andere Möglichkeit, den Objektwert in einem Objektarray anders als durch Index / Position zu ermitteln?

Okay .. hier ist genau das, was ich tue.

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

Es scheint so zu sein sollte Arbeit, also denke ich, ich werde zurückgehen und untersuchen, was ich eigentlich passiere. Vielleicht übergebe ich ein Array von Arrays oder mache etwas anderes komisch.

Antworten:

0 für die Antwort № 1

Fand es. Ich habe etwas seltsames gemacht.

Ich habe die Parameterwerte auf diese Weise als Liste gesendet:

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

Hat es in ToArray () geändert und es hat funktioniert.