这让我很生气。我觉得它看起来很简单,但下面会返回一个包含我需要的实体的IEnumerable
列表,而不仅仅是一个实体列表:
db.tblPeople.Where(p => p.id == id).Select(s => s.tblCars.Select(z => z.tblCarType)).ToList();
我的目的是检索与carType
相关联的所有personId
个实体的列表。
我认为它与最后一个嵌套select
?
答案 0 :(得分:3)
这样做是因为您希望返回多条记录:
var result = db.tblPeople
.Where(p => p.id == id)
.Select(s => s.tblCars
.SelectMany(z => z.tblCarType)).ToList();
答案 1 :(得分:2)
使用SelectMany
将IEnumerable<IEnumerable<CarType>>
展平为IEnumerable<CarType>
。
var carTypes =
db.tblPeople
.Where(p => p.id == id)
.SelectMany(s =>
s.tblCars
.Select(z => z.tblCarType))
.ToList();
这可以从
转换而来var carTypes =
(from person in tblPeople
from car in person.tblCar
from carType in car.tblCarType
where person.id == id
select carType).ToList();
答案 2 :(得分:1)
这是你想要/需要的:
db.tblPeople.Where(p =&gt; p.id == id)。 SelectMany (s =&gt; s.tblCars.Select(z =&gt; z.tblCarType))。 ToList();