无法将类型 'System.Collections.Generic.List<System.Data.SqlClient.SqlParameter>' 隐式转换为 'System.Data.SqlClient.SqlParameter'

Cannot implicitly convert type 'System.Collections.Generic.List<System.Data.SqlClient.SqlParameter>' to 'System.Data.SqlClient.SqlParameter'

对于代码:

sqlParameter = parameterSettings.GetParameters<T>(table, config);

我收到错误消息:

Error 1 Cannot implicitly convert type 'System.Collections.Generic.List' to 'System.Data.SqlClient.SqlParameter' C:\Users\jonathan.cameron\Documents\Visual Studio 2013\Projects\DataGenerator\DataGenerator\Methods\Query.cs 99 28 DataGenerator

GetParameters 的方法签名:

public List<SqlParameter> GetParameters<T>(T table, Config config)

剩下的代码

public int RunInsertQuery<T>(bool returnPrimary, SqlCommand cmd, Config config, 
             ParameterSettings parameterSettings, SqlParameter sqlParameter, 
                T table)
{
        // Used to create an INSERT Query
    Query query = new Query();

        // Pass item that needs to be inserted into SQL
    cmd.CommandText = query.InsertQuery<T>(table, config);
        // If the primary key needs to be returned...
    if(returnPrimary == true)
    {
        cmd.CommandText += "SELECT CAST(scope_identity() AS int)";
    }            
        // Obtain column names/data types/values into the SqlParameter object
    sqlParameter = parameterSettings.GetParameters<T>(table, config);

        // Check for null in Sql Parameter values, apply DBNull.Value, return parameters to
        // SqlCommand instance
    cmd.Parameters.AddRange(parameterSettings.NullValueCheck(sqlParameter).ToArray());

        // if returnPrimary is truen, return the primary key while executing 
        // the sql parameter
    if (returnPrimary)
    {
        return (int)cmd.ExecuteScalar();
    }
    else
        cmd.ExecuteNonQuery();
    return 1;            
}

GetParameters 方法 return 是一个 List,因此不能分配给 SqlParameter 字段。此字段需要是 List<SqlParameter> 类型,或者您需要 select 来自 GetParameters 方法的 return 值的一个值。