2015-07-07 4 views
0

У меня есть этот объект:Override свойство на IEnumerable объекта

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 работа сделана, у меня есть мой номер свойство отформатирован, есть лучший ва y сделать это, потому что мне это не нравится :(

+0

Нужно ли форматировать в середине добавления элементов в список? Не можете ли вы отформатировать свой номер в конце? Если вы можете, я могу рассказать вам, как изменить некоторые ваши элементы с помощью Linq. –

ответ

0

Почему бы не сделать свойство только для чтения, которое имеет формат, отформатированный?

public class OutputViewModel 
{ 
    public decimal Number { get; set; } 
    public object Mask { get; set; } 
    public string NumberFormatted 
    { 
     get { return FormatNumber(Number, Mask); } 
    } 
} 
1

LINQ предназначен для запросов, а не для изменения коллекции. Вы можете увидеть изменение в своей коллекции из-за несколько побочный эффект из-за ссылки, переданной выражению лямбда.

Лучшим способом было бы использовать простую итерацию, изменить свойство объекта на каждой итерации, а затем вернуть коллекцию, которая лучше передает намерение, ИМО.

+0

спасибо за ваш ответ, лучше сделать это на виртуальной машине – cmonti

Смежные вопросы