c# - 为什么我的列表只返回最后一行?

标签 c# asp.net-mvc c#-4.0

我正在使用一个列表并从数据库中填充它。

public List<HimHer.Models.Stories> GetAllImages()
{
    try
    {
        using (SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConStr"].ConnectionString))
        {
            SqlCommand sqlcom = new SqlCommand("Select * from Images", con);
            SqlDataAdapter adp = new SqlDataAdapter(sqlcom);
            con.Open();
            SqlDataReader dt = sqlcom.ExecuteReader();


            List<HimHer.Models.Stories> list = new List<Stories>();

            Stories st = new Stories();

            while (dt.Read()) 
            {


                st.Image = dt["Image"].ToString();
                st.Story = dt["Story"].ToString();
            }


            list.Add(st);

            return list;




        }
    }
    catch (Exception ex)
    {

        throw ex;
    }
}

Stories 模型只有 2 个属性,例如 Story、Image。

但是我的列表只返回最后一行,为什么?我希望它返回所有行。

最佳答案

因为您只向列表添加一个元素:

Stories st = new Stories();
while (dt.Read()) 
{
    st.Image = dt["Image"].ToString();
    st.Story = dt["Story"].ToString();
}
list.Add(st);

相反,将每个 元素添加到列表中:

while (dt.Read()) 
{
    Stories st = new Stories();
    st.Image = dt["Image"].ToString();
    st.Story = dt["Story"].ToString();
    list.Add(st);
}

旁注:您的 catch block 是多余的,实际上不利于异常处理和调试。您应该完全删除它。

关于c# - 为什么我的列表只返回最后一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46708542/

相关文章:

asp.net-mvc - 使用 Entity Framework 添加带有 View 的 MVC Controller (2.0)

.net - 在asp.net 4.0 mvc中显示viewdata

c# - 如何制定一个带有哈希 (#) 的 MapPageRoute?

c# - 如何从 requestTelemetry 获取 session ID?

c# - 如何找到旧密码让用户更改它

c# - 吉他标签 API?

c# - 将 Microsoft.AspNet.Mvc 用于控制台应用程序

c#-4.0 - Office 互操作在 Windows 服务中不起作用

c# - 在 Visual Studio 扩展中使用 DTE2 界面接收测试运行开始/完成

c# - C# 中 WinForm TextBox 中数字的按键事件