ASP.Net MVC#使用Where语句自动映射

ASP.Net MVC#使用Where语句自动映射,c#,asp.net,asp.net-mvc,asp.net-mvc-3,automapper,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Automapper,使用AutoMapper-在将域映射到viewmodel时,是否可以使用where语句来限制映射到viewmodel的内容,例如,我使用以下方法将报价列表映射到OfferVM viewmodel: vm.Offers = Mapper.Map<IList<Offer>, IList<OfferVM>>(offers); vm.Offers=Mapper.Map(Offers); 但是,如果报价中的属性设置为true,我只想将列表报价中的项目映射到Offer

使用AutoMapper-在将域映射到viewmodel时,是否可以使用where语句来限制映射到viewmodel的内容,例如,我使用以下方法将报价列表映射到OfferVM viewmodel:

vm.Offers = Mapper.Map<IList<Offer>, IList<OfferVM>>(offers);
vm.Offers=Mapper.Map(Offers);
但是,如果报价中的属性设置为true,我只想将列表报价中的项目映射到OfferVM,例如:

vm.Offers = Mapper.Map<IList<Offer>, IList<OfferVM>>(offers)
           .Where(x => x.RoomName1s==true);
vm.Offers=Mapper.Map(Offers)
。其中(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?)
无法隐式转换类型
'System.Collections.Generic.IEnumerable'
到
'System.Collections.Generic.IList'。
存在显式转换(是否缺少强制转换?)
谢谢你的帮助


标记您需要使用
ToList()将
Where
返回的
IEnumerable
转换为
IList

vm.Offers=Mapper.Map(Offers)
.Where(x=>x.RoomName1s==true)
.ToList();

您需要使用
ToList()将
Where
返回的
IEnumerable
转换为
IList

vm.Offers=Mapper.Map(Offers)
.Where(x=>x.RoomName1s==true)
.ToList();

您需要添加一个
.ToList()
来将IEnumerable转换为列表。

您需要添加一个
.ToList()
来将IEnumerable转换为列表。

或者,您可以将Where子句放在对AutoMapper:Mapper.Map…(提供.Where(x=>x.RoomName1s==true))的调用中感谢@jimmy bogard-我对AutoMapper很陌生,但已经看到了它的好处(我相信我会在这里浏览帖子等看到更多的好处)-感谢您制作了这样一个工具。或者,您可以在调用AutoMapper:Mapper.Map…(offers.Where(x=>x.RoomName1s==true))中加入Where子句感谢@jimmy bogard-我对AutoMapper很陌生,但已经看到了它的好处(我相信我会在这里查看帖子等看到更多)-感谢您制作了这样一个工具。
 vm.Offers = Mapper.Map<IList<Offer>, IList<OfferVM>>(offers)
       .Where(x => x.RoomName1s==true)
       .ToList();