在c#中添加两个方法的列表

我正在尝试使用getRecords列表添加getRecords2列表.出于某些原因,在getRecords上,当我调用它时需要很长时间来处理和超时.

public static List<ListA> getRecords2(string id)
{
   List<ListA> listofRecords = new List<ListA>();
   using (sqlConnection con = sqlConnect.GetDBConnection())
   {
      con.open();
      sqlCommand cmd = con.CreateCommand();
      cmd.CommandText = "sp2";
      cmd.CommandType = CommandType.StoredProcedure;
      cmd.Parameters.Add(new sqlParameter("@id",id));

      sqlDataReader reader = cmd.ExecuteReader();

      while (reader.Read())
      {
         ListA listMember = new ListA();
         listMember.ID = (int)reader["ID"];
     listMember.Name = reader["FullName"].ToString().Trim();
      }
      con.Close();
    }
       return listofRecords;
  }

  public static List<ListA> getRecords(string id)
  {
     List<ListA> listofRecords = new List<ListA>();
     using (sqlConnection con = sqlConnect.GetDBConnection())
     {
        con.open();
        sqlCommand cmd = con.CreateCommand();
        cmd.CommandText = "sp1";
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add(new sqlParameter("@id",id));

        sqlDataReader reader = cmd.ExecuteReader();

        while (reader.Read())
        {
           ListA listMember = new ListA();
           listMember.ID = (int)reader["ID"];
           listMember.Name = reader["FullName"].ToString().Trim();
        }
        con.Close();
      }
      List<ListA> newlist = getRecords(id);
      foreach (ListA x in newlist) listofRecords.Add(x);
      return listofRecords;
   }

我在getRecords2中添加了getRecords列表.我做错了吗?

解决方法

首先,在(reader.Read())循环中,您不会在列表中添加任何内容. GetRecords和GetRecords2上都缺少Add方法调用

while (reader.Read())
    {
        ListA listMember = new ListA();

        listMember.ID = (int)reader["ID"];
        listMember.Name = reader["FullName"].ToString().Trim();

        // you have to add this line:
        listofRecords.Add(listMember);
    }

一个问题是:你一遍又一遍地调用getRecords(id):

List<ListA> newlist = getRecords(id);
foreach (ListA x in newlist) listofRecords.Add(x);

应该:

List<ListA> newlist = getRecords2(id);
foreach (ListA x in newlist) listofRecords.Add(x);

最后但并非最不重要:你不必调用con.Close(); – 当程序流使用块退出时,它将自动完成,作为dispose方法的一部分.

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...