IEnumerable<ContactPerson> results = _contactPersonRepository.GetContactPersons().Where(x => x.UserId == user.UserId);
IEnumerable<ContactPersonViewModel> contactPersons = results...
我怎样才能做到这一点?我有IEnumerable<X>
,然后我想将其转换为IEnumerable<Y>
。
有什么办法吗?
问候
使用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);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句