使用Select(如果您希望项目 Y 为新类型 X)或Cast(如果 Y 继承自 X)扩展IEnumerable<T>
:
IEnumerable<ContactPersonViewModel> contactPersons =
results.Select(p => CreateContactPersonViewModelFrom(p));
如果 ContactPersonViewModel 是 ContactPerson:
IEnumerable<ContactPersonViewModel> contactPersons =
results.Cast<ContactPersonViewModel>();
通常创建视图模型涉及从实体到视图模型的手动属性映射。像这样:
IEnumerable<ContactPersonViewModel> contactPersons =
results.Select(p => new ContactPersonViewModel {
Name = p.Name,
Phone = p.Phone
});
所以我也建议你看看像Automapper这样的映射框架。它为您制作了很多映射。这段代码看起来像:
IEnumerable<ContactPersonViewModel> contactPersons =
Mapper.Map<IEnumerable<ContactPersonViewModel>>(results);