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

nap*_*i15 2 c# list

我有一个 IList<T>

IList<Student> studsList = new IList<Student>(); 
Run Code Online (Sandbox Code Playgroud)

如何从这个查询加载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? 
          }

      }
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 6

如果你command.ExecuteNonQuery();,你说"我不期待结果".如果要查看结果,则需要使用ExecuteReader,它将返回一个IDataReaderAPI,允许您使用向前循环行.Read().然后,每行可以访问一系列的API来访问列,包括通过索引([]),或GetValueGetValues或类型的访问方法(GetString,GetInt32等).

或者更简单 - 使用像小巧玲珑的工具!

var students = connection.Query<Student>(query);
Run Code Online (Sandbox Code Playgroud)

这涉及:

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

对于参数化示例:

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

(您可能需要使用$region:region取决于您的ADO.NET提供程序)