2009-12-03 135 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());