Здравствуйте, Jack128, Вы писали:
J>А вот чтоб переписать код ниже без метода Do — нужно заводить отдельный метод
J>J>IEnumerable<MyObj> GetObjs() { .... } // получаем данные
J>void Process(IEnumerable<MyObj> objs) // обрабатываем их как то
J>{
J> foreach(var obj in objs)
J> {
J> ...
J> }
J>}
J>AdditionalData GetAdditionalData(MyObj obj) { ... }
J>Proccess(GetObjs().Do(obj => obj.AdditionalData = GetAdditionalData(obj)));
J>
AdditionalData GetAdditionalData(MyObj obj) { ... }
foreach (var obj in GetObjs())
{
obj.AdditionalData = GetAdditionalData(obj)
Process(obj);
}
Короче и понятнее. Или я чего то не понял?
Непременно надо цикл в метод запихнуть?
void Process(IEnumerable<MyObj> objs, Action<MyObj> preprocessor) // обрабатываем их как то
{
foreach(var obj in objs)
{
preprocessor(obj);
...
}
}
Ну или если совсем уж намеренно упороться, то:
Proccess(GetObjs().Select(obj => {obj.AdditionalData = GetAdditionalData(obj); return obj;}));
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>