C# 将Oracle.ManagedDataAccess.Client.OracleDataReader中的行转储到在关闭连接后仍然存在的集合

C# 将Oracle.ManagedDataAccess.Client.OracleDataReader中的行转储到在关闭连接后仍然存在的集合,c#,design-patterns,.net-core,oracle.manageddataaccess,C#,Design Patterns,.net Core,Oracle.manageddataaccess,我正在尝试编写一个简单的帮助函数,它使用Oracle.ManagedDataAccess.Corelibrary连接到Oracle数据库,并返回行 当与数据库的连接关闭时,返回的对象应继续存在。类似于下面的内容。我不知道结果会是什么 public <sometype> GetOracleResults(string connectionString, string cmdText, List<OracleParameter> oracleParameters) {

我正在尝试编写一个简单的帮助函数,它使用
Oracle.ManagedDataAccess.Core
library连接到Oracle数据库,并返回行

当与数据库的连接关闭时,返回的对象应继续存在。类似于下面的内容。我不知道结果会是什么

public <sometype> GetOracleResults(string connectionString, string cmdText, List<OracleParameter> oracleParameters)
{
    <sometype> results = null;
    try
    {
        using (OracleConnection oracleConnection = new OracleConnection(connectionString))
        {
            oracleConnection.Open();
            using (OracleCommand oracleCommand = new OracleCommand(cmdText, oracleConnection))
            {
                foreach (var param in oracleParameters)
                {
                    oracleCommand.Parameters.Add(param);
                }
                OracleDataReader oracleDataReader = oracleCommand.ExecuteReader();
                if(oracleDataReader.HasRows)
                {
                    results = new <sometype>();
                    while (oracleDataReader.Read())
                    {
                        //loop through the reader and add results
                        return results;
                    }
                }
            }
        }
    }
    catch (Exception)
    {
       //todo
        throw;
    }
}
public GetOracleResults(字符串连接字符串、字符串cmdText、列表oracleParameters)
{
结果=空;
尝试
{
使用(OracleConnection OracleConnection=新OracleConnection(connectionString))
{
oracleConnection.Open();
使用(OracleCommand OracleCommand=new OracleCommand(cmdText,oracleConnection))
{
foreach(oracleParameters中的var param)
{
oracleCommand.Parameters.Add(param);
}
OracleDataReader OracleDataReader=oracleCommand.ExecuteReader();
if(oracleDataReader.HasRows)
{
结果=新的();
while(oracleDataReader.Read())
{
//循环阅读并添加结果
返回结果;
}
}
}
}
}
捕获(例外)
{
//待办事项
投掷;
}
}

它必须是强类型的吗?如果没有,一位同事让我将数据粘贴到字典项列表中,例如:

var columns = new List<string>();
for (int i = 0; i < myReader.FieldCount; i++)
{
   columns.Add(myReader.GetName(i).Trim());
}

while (myReader.Read() && results.Count < 200)
{
   Dictionary<string, string> row = new Dictionary<string, string>();
   foreach (var column in columns)
   {
      row.Add(column, Convert.ToString(myReader[column], CultureInfo.InvariantCulture).Trim());
   }
   results.Add(row);
}
var columns=newlist();
for(int i=0;i
我想,如果您知道模式,因此进入方法的泛型类型具有与列名匹配的属性名,那么您可以使用反射将列结果与C#对象匹配