2009-12-03 4 views
4

мне интересно, если есть лучший способ сделать следующее,Заполняем список объектов (с Linq?)

IList<RoleViewModel> ReturnViewModel = new List<RoleViewModel>(); 

    IList<Role> AllRoles = PermServ.GetAllRoles(); 

    foreach (var CurRole in AllRoles) 
    { 
     ReturnViewModel.Add(new RoleViewModel(CurRole)); 
    } 

Его довольно простой код просто принимает объект данных и преобразование его в ViewModel , Мне было интересно, есть ли способ сделать это лучше? - Может быть, с Линком?

ответ

7

Сверху моей головы (не от машины-разработчика).

IList<RoleViewModel> returnViewModel = PermServ.GetAllRoles() 
             .Select(x => new RoleViewModel(x)) 
             .ToList(); 
+0

'IList AllRoles =' должно ли это быть 'IList AllRoles =' – Hath

+0

Люди в стеклянных домах ... справа. :-) –

6
var returnViewModel = (from n in PermServ.GetAllRoles() 
         select new RoleViewModel(n)).ToList(); 
+0

Должен быть выбран новый RoleViewModel (n)). ToList(); Нет? –

+0

yep - только что увидел. – Hath

0

Другим вариантом является использование AutoMapper обработки ваших конверсий.

Mapper.CreateMap<Role, RoleModel>(); 
IList<RoleViewModel> returnViewModel = 
    Mapper.Map<IList<Role>, IList<RoleViewModel>>(PermServ.GetAllRoles()); 
Смежные вопросы