通过索引获取对象数组的单个值

时间:2012-10-31 19:52:54

标签: c# arrays iteration

我在这里遗漏了一些明显的东西,我认为我需要一个新的视角。

我传递的是object []类型的参数。我想提取数组中的元素并将其值赋给另一个变量,因为我正在循环遍历另一个列表:

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

尽我所能,将parameter.Value设置为对象数组,而不是对象在位置i的值。

我在这里缺少什么?是否有不同的方法来获取除索引/位置以外的对象数组中的对象值?

好的..这正是我正在做的事情。

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

似乎这个应该工作,所以我想我会回去调查我实际传递的内容。也许我正在传递数组数组或做其他奇怪的事情。

1 个答案:

答案 0 :(得分:0)

找到它。我做了一些奇怪的事。

我以这种方式将参数值作为列表发送:

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

将其更改为ToArray()并且有效。