c# - 同一对象被添加到对象列表中

标签 c# asp.net-mvc

<分区>

我在 db 中有 5 条记录,我想在 UI 上显示它们,但是在迭代时使用下面的代码它显示不同的对象但在列表中它显示相同的对象 5 次 帮我解决这个问题,看看我是否可以有更好的编码实践

我已经使用For循环迭代并将记录放入 friend 列表中

  public ViewResult Contact()
    {
        Friends friend = new Friends();
        List<Friends> friends = new List<Friends>();
        string connectionString = ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString;
        SqlConnection con = new SqlConnection(connectionString);
        SqlCommand cmd = new SqlCommand("select * from Friends", con);
        SqlDataAdapter da = new SqlDataAdapter();
        DataTable dt = new DataTable();
        da.SelectCommand = cmd;
        da.Fill(dt);

        for (var i = 0; i < dt.Rows.Count; i++)
        {
            friend.friendId = Convert.ToInt32(dt.Rows[i]["FriendId"]);
            friend.firstName = dt.Rows[i]["FirstName"].ToString();
            friend.lastName = dt.Rows[i]["LastName"].ToString();
            friend.currentAmountGiven = Convert.ToInt32(dt.Rows[i]["CurrentAmountGiven"]);
            friend.totalAmount = Convert.ToInt32(dt.Rows[i]["TotalAmount"]);
            friends.Add(friend);
        }
        return View(friends);

    }

在 Friends 中,我从 db 获得了 5 次相同的行

需要我上面说的输出

最佳答案

您需要在 for 循环 中实例化 Friends 对象。

在您的情况下,您正在 for 循环 之外创建 Friends 对象的实例,并在每次迭代中更改其属性的值,这就是为什么每次您的代码都以列表中的相同实例。

您需要每次都创建Friends 的新实例,每次都为其属性赋值,并在每次迭代中将其添加到列表中

    for (var i = 0; i < dt.Rows.Count; i++)
    {
        Friends friend = new Friends();  // Change scope of friends from function level to for loop level.
        friend.friendId = Convert.ToInt32(dt.Rows[i]["FriendId"]);
        friend.firstName = dt.Rows[i]["FirstName"].ToString();
        friend.lastName = dt.Rows[i]["LastName"].ToString();
        friend.currentAmountGiven = Convert.ToInt32(dt.Rows[i]["CurrentAmountGiven"]);
        friend.totalAmount = Convert.ToInt32(dt.Rows[i]["TotalAmount"]);
        friends.Add(friend);
    }

关于c# - 同一对象被添加到对象列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56354975/

相关文章:

c# - 在不同的 Mvc 解决方案中使用相同的代码

c# - 退出我的 wp7 游戏后图形损坏

c# - 是否可以在不使用 ASP.NET MVC 项目中的参数的情况下通过 RedirectToAction 传递数据?

JavaScript 元素在部分 View 中格式化,但不起作用

asp.net-mvc - serilog appSettings 写入同一服务器路径中的文件 asp.net mvc

c# - 比较 List<int> 的内容以找到匹配项

c# - 在 ASP.NET 服务器端保留用户特定设置

c# - 如何转义 .NET Regex Replace 中的替换/替换部分

C# MVC 处理 View 中的编译错误,例如缺少装配引用?

c# - 接受 lambda 的方法的实现