我有这个对象:
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作业完成后,我的Number属性被格式化了,有没有更好的方法来做,因为我不喜欢它:(
答案 0 :(得分:1)
LINQ用于查询,而不是用于修改集合。由于传递给lambda表达式的引用,因为有些副作用,您可以看到集合中的更改。
更好的方法是使用简单的迭代,在每次迭代中修改对象的属性,然后返回集合,以更好的方式传达意图,IMO。
答案 1 :(得分:0)
为什么不制作一个具有格式化数字的只读属性?
public class OutputViewModel
{
public decimal Number { get; set; }
public object Mask { get; set; }
public string NumberFormatted
{
get { return FormatNumber(Number, Mask); }
}
}