2 回答
TA贡献1801条经验 获得超8个赞
你只有一个 ProductsSize对象:
var _size = new ProductsSize();
你不断修改同一个对象。该对象的所有引用,包括当你修改它被添加到,获取更新的任何列表元素一个对象。
相反,在循环中创建新对象:
foreach (var item in model.Dynamic_ProductsSize)
{
var _size = new ProductsSize();
_size.SizeId = item;
_sizes.Add(_size);
}
这样列表中的每个元素都是一个新对象,而不是多次添加的同一个对象。
旁注,您在代码中有一些不必要的东西。例如,在循环之前检查长度,以及在末尾将列表转换为列表。
事实上,我想所有显示的代码都可以简化为:
model.ProductsSize = model.Dynamic_ProductsSize.Select(p => new ProductsSize { SizeId = p }).ToList();
在这种情况下,您也只是将一个模型属性转换为另一个模型属性。为什么不把这个逻辑放在模型本身并跳过整个事情?
public IEnumerable<ProductsSize> ProductsSize
{
get { return this.Dynamic_ProductsSize.Select(p => new ProductsSize { SizeId = p });
}
除非有一个特殊的原因,你想要在两个不同的属性中两次使用相同的数据,这在这段代码中并不清楚,有一组数据和不同的视图/计算/等。的数据通常是首选。
TA贡献1802条经验 获得超5个赞
在将其添加到列表之前创建一个新对象。您可以使用对象初始值设定项语法来保持简洁:
if (model.Dynamic_ProductsSize.Count > 0)
{
foreach (var item in model.Dynamic_ProductsSize)
{
_sizes.Add(new ProductsSize(){SizeId = item});
}
}
- 2 回答
- 0 关注
- 145 浏览
添加回答
举报