目前,我有一个执行数据库调用的方法,该方法返回一个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;
}
答案 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>
,其名称就是这样。