如何从IEnumerable获取具有ID的linq列表<;对象>;
下面的代码如何从IEnumerable获取具有ID的linq列表<;对象>;,linq,ienumerable,Linq,Ienumerable,下面的代码userModel.Carriers是IEnumerable的类型。 userModel.Carriers有一个具有ID的运营商列表。有了这些ID,我想用linq获得CarrierDivision。但是,我不能正确理解它,因为linqsqlexpression与IEnumerable expression不兼容 userModel.Carriers = carriersForRegion.Select(carrier => Mapper.Map<CarrierModel&g
userModel.Carriers
是IEnumerable
的类型。
userModel.Carriers
有一个具有ID的运营商列表。有了这些ID,我想用linq获得CarrierDivision。但是,我不能正确理解它,因为linqsqlexpression与IEnumerable expression不兼容
userModel.Carriers = carriersForRegion.Select(carrier => Mapper.Map<CarrierModel>(carrier))
.ToList();
var carrierDivision = from c in db.CarrierDivision where c.Contains();
userModel.Carriers=carriersForRegion.Select(carrier=>Mapper.Map(carrier))
.ToList();
var carrierDivision=来自db.carrierDivision中的c,其中c.包含();
集合。包含将生成。。其中CarrierId位于(1,2,3)
sql查询中
var carrierIds=userModel.Carriers.Select(carrier=>carrier.Id.ToArray();
var分区=db.CarrierDivision
.Where(division=>carrierIds.Contains(division.CarrierId))
.ToArray();
如果db.CarrierDivision
返回IEnumerable
(不是数据库),那么我建议创建运营商ID的HashSet
var carrierIds=userModel.Carriers.Select(carrier=>carrier.Id.ToHashSet();
var分区=db.CarrierDivision
.Where(division=>carrierIds.Contains(division.CarrierId))
.ToArray();
使用HashSet
search执行,无需额外枚举-O(1)