覆盖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工作完成,我有我的数字属性格式化,有更好的方法来做,因为我不喜欢它:(

覆盖IEnumerable对象的属性

LINQ用于查询,而不是用于修改集合。您可以看到集合中的变化,因为由于传递给lambda表达式的引用而产生了一些副作用。

更好的方法是使用简单的迭代,在每次迭代中修改对象的属性,然后返回集合,这将以更好的方式传达意图,在我看来。

为什么不创建一个带有数字格式的只读属性呢?

public class OutputViewModel
{
    public decimal Number { get; set; }
    public object Mask { get; set; }
    public string NumberFormatted 
    {
        get { return FormatNumber(Number, Mask); }
    }
}
相关文章: