0

我在以下代码中有问题。下面是我的模型代码

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

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

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

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

我做错了什么?

4

2 回答 2

5

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

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

于 2013-02-26T14:01:48.943 回答
3

您需要Comments com = new Comments();在 foreach 中每次实例化。至于现在,您只需重写对同一对象的引用。

或者将 foreach 重写为:

    foreach (var item in userComments)
    {
        savedComments.lstCommet.Add(
           new Comments()
           {
               com.displayComments = item.Comments,
               com.dTime = item.Time
           });  
    }
于 2013-02-26T14:01:40.257 回答