【发布时间】:2018-07-09 09:46:52
【问题描述】:
目前我有一个执行数据库调用的方法,它返回一个DataTable,然后将其转换为List<>。由于我将此方法用于不同的数据库调用,我需要让它返回任何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;
}
【问题讨论】:
-
ConvertToList 方法也应该是通用的:
ConvertToList<T>(dt, list) -
另外,从代码看来,
ConvertToList返回的是IEnumerable,而不是List。有一个ConvertToList().ToList()有点傻,你不觉得吗? -
这与your previous question有何不同?
标签: c#