将IEnumerable <X>转换为IEnumerable <Y>

IEnumerable<ContactPerson> results = _contactPersonRepository.GetContactPersons().Where(x => x.UserId == user.UserId);
IEnumerable<ContactPersonViewModel> contactPersons = results...

我怎样才能做到这一点?我有IEnumerable<X>,然后我想将其转换为IEnumerable<Y>

有什么办法吗?

问候

谢尔盖·别列佐夫斯基(Sergey Berezovskiy)

使用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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章