我在这里遗漏了一些明显的东西,我想我需要一个新的视角。
我正在传递对象 [] 类型的参数。我想提取数组中的元素并将其值分配给另一个变量,因为我正在循环另一个列表:
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;
}
看起来这应该可行,所以我想我会回去调查我实际传递的内容。也许我正在传递一个数组数组或做其他奇怪的事情。