Используйте Select (если вы хотите проекта Y для нового типа X) или Cast (если Y наследуется от X) расширения IEnumerable<T>
:
IEnumerable<ContactPersonViewModel> contactPersons =
results.Select(p => CreateContactPersonViewModelFrom(p));
Если ContactPersonViewModel является ContactPerson:
IEnumerable<ContactPersonViewModel> contactPersons =
results.Cast<ContactPersonViewModel>();
Обычно creat модель просмотра включает в себя сопоставление свойств вручную с объекта для просмотра модели. Как это:
IEnumerable<ContactPersonViewModel> contactPersons =
results.Select(p => new ContactPersonViewModel {
Name = p.Name,
Phone = p.Phone
});
Так я и предлагаю вам принять взглянуть на некоторые сопоставления структуры, как Automapper. Он делает много карт для вас. И этот код будет выглядеть следующим образом:
IEnumerable<ContactPersonViewModel> contactPersons =
Mapper.Map<IEnumerable<ContactPersonViewModel>>(results);
большое спасибо за 'Automapper'! С уважением :) – whoah