2013-08-21 33 views
0

使用AutoMapper - 有可能,當一個域映射到視圖模型,使用where語句,限制什麼映射到視圖模型,例如。我用下面的發售列表映射到OfferVM視圖模型:ASP.Net MVC C#AutoMapper使用Where語句

vm.Offers = Mapper.Map<IList<Offer>, IList<OfferVM>>(offers); 

但是,我只希望映射列表中的要約OfferVM項目如果在發售的屬性設置爲true,如:

vm.Offers = Mapper.Map<IList<Offer>, IList<OfferVM>>(offers) 
      .Where(x => x.RoomName1s==true); 

但這給出了錯誤:

Cannot implicitly convert type 
'System.Collections.Generic.IEnumerable<FGBS.ViewModels.OfferVM>' 
    to 
'System.Collections.Generic.IList<FGBS.ViewModels.OfferVM>'. 
An explicit conversion exists (are you missing a cast?) 

感謝您的幫助。

馬克

回答

3

您需要使用ToList()

vm.Offers = Mapper.Map<IList<Offer>, IList<OfferVM>>(offers) 
     .Where(x => x.RoomName1s==true) 
     .ToList(); 
+0

或者,你可以把Where子句放在對AutoMapper的調用中:Mapper.Map ...(offers.Where(x => x.RoomName1s == true)) –

+0

Thanks @ jimmy-bogard - I'm very新的AutoMapper,但已經可以看到它的好處(更多,我敢肯定,當我看到這裏的帖子等,我會看到) - 感謝您製作這樣的工具。 – Mark

1

您需要添加一個.ToList()到了IEnumerable轉換到一個列表由Where返回IEnumerable<OfferVM>轉換成IList<OfferVM>