在c#中添加两个方法的列表
发布时间:2020-12-16 01:54:14 所属栏目:百科 来源:网络整理
导读:我正在尝试使用getRecords列表添加getRecords2列表.出于某些原因,在getRecords上,当我调用它时需要很长时间来处理和超时. public static ListListA getRecords2(string id){ ListListA listOfRecords = new ListListA(); using (SqlConnection con = SqlConn
我正在尝试使用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方法的一部分. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |