2009-12-03 102 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 。我想知道是否有办法做得更好? - 也许与Linq?

回答

7

从我的头顶(而不是开发机器)。

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

'IList AllRoles ='这应该是'IList AllRoles =' – Hath 2009-12-03 15:27:47

+0

玻璃房子里的人......对。 :-) – 2009-12-03 15:38:28

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

应该选择新的RoleViewModel(n))。ToList();没有? – 2009-12-03 15:23:19

+0

是的 - 只是看到它。 – Hath 2009-12-03 15:23:47

0

另一种选择是使用AutoMapper来处理您的转换。

Mapper.CreateMap<Role, RoleModel>(); 
IList<RoleViewModel> returnViewModel = 
    Mapper.Map<IList<Role>, IList<RoleViewModel>>(PermServ.GetAllRoles());