我正在尝试创建一个简单的对象列表,但不知何故,在每个 foreach 循环中,以前的记录都会被新的循环覆盖,以前的记录会被新记录覆盖。因此,如果 realData 中有 6 个条目,则列表将包含最后一条记录的 6 倍。
我是否以某种方式重新创建列表而不是添加到列表中?我是否还忽略了另一种创建列表的替代方法?
我的代码是
public async Task<IActionResult> OrderOverview()
{
var itemList = new List<OrderItemVM>();
var realData = await _context.OrderItem.ToListAsync();
var orderItemVM = new OrderItemVM();
foreach (var item in realData)
{
orderItemVM.Id = item.Id;
orderItemVM.OrderId = item.OrderId;
orderItemVM.OrderName = _context.Order.Find(item.OrderId).OrderName;
orderItemVM.ItemName = item.ItemName;
itemList.Add(orderItemVM);
}
return View(itemList);
}
Run Code Online (Sandbox Code Playgroud)
您正在修改先前添加的对象,而不是添加新对象。你应该做这个。
foreach (var item in realData)
{
OrderItemVM orderItemVM = new OrderItemVM ();
orderItemVM.Id = item.Id;
orderItemVM.OrderId = item.OrderId;
orderItemVM.OrderName = _context.Order.Find(item.OrderId).OrderName;
orderItemVM.ItemName = item.ItemName;
itemList.Add(orderItemVM);
}
Run Code Online (Sandbox Code Playgroud)
因此,基本上在每次迭代中,您都会创建一个新的空对象,然后分配该值并将其添加到 List 中。
| 归档时间: |
|
| 查看次数: |
1077 次 |
| 最近记录: |