asp.net mvc - c# - mvc中的列表问题
本文关键字:mvc 列表 问题 net asp | 更新日期: 2023-09-27 18:01:17
我在以下代码中有问题。下面是我的模型代码
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;
}
}
}
和在我的控制器我从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第3次使用第3项数据更新列表中的第1和第2第3项。
在循环之外实例化Comments
。这意味着堆上有一堆对同一注释对象的引用。你需要做
Comments com = new Comments();
在foreach内。这将在每次迭代中创建一个单独的实例,而不是仅仅给一个实例新的值。
您需要在foreach中每次实例化Comments com = new Comments();
。到目前为止,您只需重写对同一对象的引用。
或者将foreach重写为:
foreach (var item in userComments)
{
savedComments.lstCommet.Add(
new Comments()
{
com.displayComments = item.Comments,
com.dTime = item.Time
});
}