如何将查询结果加载到IList <t>

时间:2017-12-03 01:26:39

标签: c# list

我有IList<T>

IList<Student> studsList = new IList<Student>(); 

如何将此查询中的nameage属性加载到studsList

   using(OracleCommand command = new OracleCommand(querySQL, connection))

   {
      connection.Open();
      string query = "SELECT name, age FROM Student";
      using(OracleCommand command = new OracleCommand(querySQL, connection)) {
          using(OracleDataAdapter oracleDataAdapter = new OracleDataAdapter()) {
              oracleDataAdapter.SelectCommand = command;                  
              command.ExecuteNonQuery();
              //What to do here? 
          }

      }

1 个答案:

答案 0 :(得分:6)

如果您command.ExecuteNonQuery();,您说的是&#34;我不期待结果&#34;。如果您想查看结果,则需要使用ExecuteReader,它会返回IDataReader API,允许您使用.Read()以向前方向循环行。然后,每行您可以访问一系列用于访问列的API,包括通过索引器([])或GetValueGetValues或键入的访问方法(GetStringGetInt32等。)

或者更简单 - 使用像dapper这样的工具!

var students = connection.Query<Student>(query);

这涉及:

  • 连接生命周期(开放等)
  • 创建命令
  • 参数化(本例中未显示,但非常简单)
  • 执行命令
  • 处理读者
  • 将每行的内容解析为T(在这种情况下为Student
  • 正确关闭所有内容

对于参数化示例:

var region = "North";
var students = connection.Query<Student>(
    "select * from Students where Region=@region", new { region });

(根据您的ADO.NET提供商,您可能需要使用$region:region