Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从IEnumerable获取具有ID的linq列表<;对象>;_Linq_Ienumerable - Fatal编程技术网

如何从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)