覆盖IEnumerable对象的属性
本文关键字:属性 对象 IEnumerable 覆盖 | 更新日期: 2023-09-27 18:01:30
我有这个对象:
var child = Mapper.Map<List<ChildViewModel>>( model.ChildData );
,我返回这个:
return new OutputViewModel
{
ChildData = child
};
但是在中间,我需要在其中一个子属性中执行更改,我尝试了这个:
var dummy = child.Select(e => e.Number = FormatNumber(e.Number, e.Mask));
所以当我返回OutputViewModel工作完成,我有我的数字属性格式化,有更好的方法来做,因为我不喜欢它:(
LINQ用于查询,而不是用于修改集合。您可以看到集合中的变化,因为由于传递给lambda表达式的引用而产生了一些副作用。
更好的方法是使用简单的迭代,在每次迭代中修改对象的属性,然后返回集合,这将以更好的方式传达意图,在我看来。
为什么不创建一个带有数字格式的只读属性呢?
public class OutputViewModel
{
public decimal Number { get; set; }
public object Mask { get; set; }
public string NumberFormatted
{
get { return FormatNumber(Number, Mask); }
}
}