在方法(C#)

时间:2018-07-09 09:46:52

标签: c#

目前,我有一个执行数据库调用的方法,该方法返回一个DataTable,然后将其转换为List<>。由于我正在将此Method用于不同的数据库调用,因此需要使它返回任何List<>。由于出现错误,目前无法执行此操作:

Cannot convert List<T> to List<object>

如果我想返回任何列表,该函数应该具有哪种返回类型? 例如结果列表可能是以下类型:

List<MirrorDeployments>

或:

List<ProductionDeployments>

我的功能

public List<T> Execute<T>(string strSql, List<T> list)
{
    using (OracleConnection conn = new OracleConnection(cnnStr))
    {
        using (OracleCommand objCommand = new OracleCommand(strSql, conn))
        {
            objCommand.CommandType = CommandType.Text;
            DataTable dt = new DataTable();
            OracleDataAdapter adp = new OracleDataAdapter(objCommand);
            conn.Open();
            adp.Fill(dt);
            if (dt != null)
            {

                list = ConvertToList(dt, list).ToList();
            }
        }
    }
    return list;
}

1 个答案:

答案 0 :(得分:2)

假设ConvertToList返回一个object的可枚举:

public List<T> Execute<T>(string strSql)
{
    using (OracleConnection conn = new OracleConnection(cnnStr))
    {
        using (OracleCommand objCommand = new OracleCommand(strSql, conn))
        {
            objCommand.CommandType = CommandType.Text;
            DataTable dt = new DataTable();
            OracleDataAdapter adp = new OracleDataAdapter(objCommand);
            conn.Open();
            adp.Fill(dt);
            if (dt != null)
            {

                return ConvertToList(dt).Cast<T>().ToList();
            }
        }
    }
    return new List<T>();
}

我删除了参数list,因为它似乎没用。

一个更好的选择是将ConvertToList转换为一个通用方法ConvertToList<T>,其名称就是这样。