Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将SqlDataReader值复制到数组中_C#_Tsql - Fatal编程技术网

C# 如何将SqlDataReader值复制到数组中

C# 如何将SqlDataReader值复制到数组中,c#,tsql,C#,Tsql,我是编程界的新手,我正在努力捕捉所有的价值观​​通过SqlDataReader访问数据库,并执行良好,直到某个部分,问题是当数据库发送多行时。返回第二行将更改第一行中的所有数据 这是我的密码 public List<MethodServiceModel> QueryMethod(int idMethod) { List<MethodServiceModel> list = new List<MethodServiceModel>();

我是编程界的新手,我正在努力捕捉所有的价值观​​通过SqlDataReader访问数据库,并执行良好,直到某个部分,问题是当数据库发送多行时。返回第二行将更改第一行中的所有数据

这是我的密码

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; }
}