C# 如何在列表中存储SqlDataReader的值<;类别>;?

C# 如何在列表中存储SqlDataReader的值<;类别>;?,c#,ado.net,sqldatareader,C#,Ado.net,Sqldatareader,嗨,我有一个返回列表的方法,但我得到了不想要的结果,请让我知道下面代码中的错误 cmd2.CommandText = "select * from Blogs order by id desc"; SqlDataReader reader = cmd2.ExecuteReader(); List<Blogs> blogslist = new List<Blogs>(); while (reader.Read()) { blog.Id = Convert.T

嗨,我有一个返回列表的方法,但我得到了不想要的结果,请让我知道下面代码中的错误

cmd2.CommandText = "select * from Blogs order by id desc"; 
SqlDataReader reader = cmd2.ExecuteReader(); 
List<Blogs> blogslist = new List<Blogs>(); 
while (reader.Read()) 
{ 
   blog.Id = Convert.ToInt16(reader["id"]); 
   blog.email = reader["email"].ToString(); 
   blog.description = reader["description"].ToString(); 
   blog.date =Convert.ToDateTime(reader["date"]); 
   blogslist.Add(blog); 
}
cmd2.CommandText=“按id描述从博客中选择*”;
SqlDataReader=cmd2.ExecuteReader();
List blogslist=新列表();
while(reader.Read())
{ 
blog.Id=Convert.ToInt16(读卡器[“Id”]);
blog.email=reader[“email”].ToString();
blog.description=reader[“description”].ToString();
blog.date=Convert.ToDateTime(读卡器[“日期”]);
blogslist.Add(blog);
}

博客已在您的reader.Read()语句之外声明和实例化,您每次都在循环中更新相同的对象引用,这就是您在列表中看到重复对象的原因

cmd2.CommandText = "select * from Blogs order by id desc"; 
SqlDataReader reader = cmd2.ExecuteReader(); 
List<Blogs> blogslist = new List<Blogs>(); 
while (reader.Read()) 
{ 
   var blog = new Blogs();
   blog.Id = Convert.ToInt16(reader["id"]); 
   blog.email = reader["email"].ToString(); 
   blog.description = reader["description"].ToString(); 
   blog.date =Convert.ToDateTime(reader["date"]); 
   blogslist.Add(blog); 
}
cmd2.CommandText=“按id描述从博客中选择*”;
SqlDataReader=cmd2.ExecuteReader();
List blogslist=新列表();
while(reader.Read())
{ 
var blog=新博客();
blog.Id=Convert.ToInt16(读卡器[“Id”]);
blog.email=reader[“email”].ToString();
blog.description=reader[“description”].ToString();
blog.date=Convert.ToDateTime(读卡器[“日期”]);
blogslist.Add(blog);
}

如果解决了您的问题,请将此标记为您接受的答案。

博客已在您的reader之外声明和实例化。Read()语句,您每次都在循环中更新相同的对象引用,这就是为什么您在列表中看到重复的对象

cmd2.CommandText = "select * from Blogs order by id desc"; 
SqlDataReader reader = cmd2.ExecuteReader(); 
List<Blogs> blogslist = new List<Blogs>(); 
while (reader.Read()) 
{ 
   var blog = new Blogs();
   blog.Id = Convert.ToInt16(reader["id"]); 
   blog.email = reader["email"].ToString(); 
   blog.description = reader["description"].ToString(); 
   blog.date =Convert.ToDateTime(reader["date"]); 
   blogslist.Add(blog); 
}
cmd2.CommandText=“按id描述从博客中选择*”;
SqlDataReader=cmd2.ExecuteReader();
List blogslist=新列表();
while(reader.Read())
{ 
var blog=新博客();
blog.Id=Convert.ToInt16(读卡器[“Id”]);
blog.email=reader[“email”].ToString();
blog.description=reader[“description”].ToString();
blog.date=Convert.ToDateTime(读卡器[“日期”]);
blogslist.Add(blog);
}

如果它解决了您的问题,请将此标记为您接受的答案。

不希望出现的结果是什么?错误消息是什么?错误的结果?它是什么?空名单?特定列中的数据错误。请更新您的答案并具体说明。Blogs表有4条不同的记录,在reader.read()之后,blogslist包含相同的记录4次,而不是4条不同的记录。意外结果是什么?错误消息是什么?错误的结果?它是什么?空名单?特定列中的数据错误。请更新您的答案并具体说明。Blogs表有4条不同的记录,在reader.read()之后,blogslist包含相同的记录4次,而不是4条不同的记录。他最初以纯文本形式发布代码,这就是部分不知何故被删除的原因。感谢用户3185569,这就消除了该部分。非常感谢Michael:-)他最初以纯文本形式发布代码,这就是该部分以某种方式被删除的原因。感谢用户3185569,这就消除了该部分。非常感谢Michael:-)