C#中的列表问题 - MVC

use*_*567 0 c# asp.net-mvc

我在下面的代码中有问题.下面是我的型号代码

public class Comments
{
    public string displayComments { get; set; }

    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
    public DateTime? dTime { get; set; }

    public int airPortId { get; set; }
}

public class LstComments
{
    private List<Comments> _lstcomment = new List<Comments>();

    public List<Comments> lstCommet
    {
        get
        {
            return _lstcomment;
        }
        set
        {
            _lstcomment = value;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

并在mycontroller中从EF获取数据并将其添加到For循环中的属性.代码如下

Comments com = new Comments();
LstComments savedComments = new LstComments();

AirportEntities airPortEntity = new AirportEntities();

var userComments = from c in airPortEntity.AirportComments
                    select c;

//List<Comments> savedComments = new List<Comments>();

foreach (var item in userComments)
{
    com.displayComments = item.Comments;
    com.dTime = item.Time;

    savedComments.lstCommet.Add(com);            
}
Run Code Online (Sandbox Code Playgroud)

我的问题是我的整个列表正在更新相同的记录(最近添加的数据)

例如.foreach 3rd timn用第3项数据更新列表中的第1和第3第3项.

我做错了什么?

Ste*_*a D 5

Comments在循环外实例化.这意味着堆上有相同注释对象的一堆引用.你需要这样做

Comments com = new Comments(); 在foreach里面.这将在每次迭代时创建一个单独的实例,而不是仅为一个实例提供新值.