/ / Uzyskaj pojedynczą wartość tablicy obiektów według indeksu - c #, tablice, iteracja

Uzyskaj pojedynczą wartość tablicy obiektów według indeksu - c #, tablice, iteracja

Brakuje mi tutaj czegoś oczywistego i myślę, że potrzebuję nowej perspektywy.

Podaję parametr typu obiekt []. Chcę wyodrębnić element z tablicy i przypisać jego wartość innej zmiennej, ponieważ zapętlam inną listę:

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

Spróbuj, jak mogę, parametr.Value jest ustawiony na tablicę obiektów, a nie na wartość obiektu w pozycji i.

Czego tu brakuje? Czy istnieje inny sposób na uzyskanie wartości obiektu w tablicy obiektów niż przez indeks / pozycję?

Okej, oto dokładnie to, co robię.

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

Wygląda na to powinien pracować, więc myślę, że wrócę i zbadam, co właściwie mijam. Może przekazuję tablicę tablic lub robię coś dziwnego.

Odpowiedzi:

0 dla odpowiedzi № 1

Znaleziono to. Robiłem coś dziwnego.

W ten sposób przesyłałem parametr Values ​​jako listę:

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

Zmieniłem to na ToArray () i zadziałało.