C# 如何将SqlDataReader值复制到数组中
我是编程界的新手,我正在努力捕捉所有的价值观通过SqlDataReader访问数据库,并执行良好,直到某个部分,问题是当数据库发送多行时。返回第二行将更改第一行中的所有数据 这是我的密码C# 如何将SqlDataReader值复制到数组中,c#,tsql,C#,Tsql,我是编程界的新手,我正在努力捕捉所有的价值观通过SqlDataReader访问数据库,并执行良好,直到某个部分,问题是当数据库发送多行时。返回第二行将更改第一行中的所有数据 这是我的密码 public List<MethodServiceModel> QueryMethod(int idMethod) { List<MethodServiceModel> list = new List<MethodServiceModel>();
public List<MethodServiceModel> QueryMethod(int idMethod)
{
List<MethodServiceModel> list = new List<MethodServiceModel>();
try
{
using (var conn = new NpgsqlConnection(connstring))
{
conn.Open();
NpgsqlTransaction tran = conn.BeginTransaction();
// Retrieve all rows
var cmd = new NpgsqlCommand("\"integrador\".\"GET_METODO_SERVICIO\"", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue(":id_metodo", idMethod);
using (var reader = cmd.ExecuteReader())
{
int count = 0;
MethodServiceModel methodService = new MethodServiceModel();
while (reader.Read())
{
methodService.NameService = reader["NOMBRE"].ToString();
methodService.Url = reader["URL_SERVICIO_WEB"].ToString();
methodService.HeaderName = reader["NOMBRE_ENCABEZADO"].ToString();
methodService.HeaderValue = reader["VALOR"].ToString();
methodService.PeriodicityId = Convert.ToDecimal(reader["VALOR_PEROPDICIDAD"]);
list.Add(methodService);
}
reader.Close();
}
tran.Commit();
conn.Close();
return list;
}
}
catch (Exception)
{
}
return list;
}
我只是希望当我参考两行或更多行,HeaderName和HeaderValue时,我可以区分和操作它们中的每一行
这就是它在我的数据库中的外观:
您正在while循环之外实例化MethodServiceModel,因此每次向列表中添加项目时,您都在修改同一个实例。将对象添加到列表时,添加的是引用,而不是副本
您应该移动行MethodServiceModel methodService=new MethodServiceModel;在您的while循环中。谢谢。这是一个非常重要的帮助
public class MethodServiceModel
{
public string NameService { get; set; }
public string Url { get; set; }
public string HeaderName { get; set; }
public string HeaderValue { get; set; }
public decimal PeriodicityId { get; set; }
}