Linq 实体框架中的多对多

Linq 实体框架中的多对多,linq,entity-framework,Linq,Entity Framework,我有3个表,其中行程和乘客是多对多关系: Trip{TripId} 乘客{乘客姓名} TripPassenger{Tripid,PassengerName} 假设我希望检索行程中的乘客列表,例如行程ID 1中的所有乘客: TripId PassengerName 1 admin 1 derp 1 alex 2 admin 有什么解决方案或指南吗?首先查询行程表并获取必要的行程对象 Trip tripToSearch = context.Trips.Sin

我有3个表,其中行程和乘客是多对多关系:

Trip{TripId}

乘客{乘客姓名}

TripPassenger{Tripid,PassengerName}

假设我希望检索行程中的乘客列表,例如行程ID 1中的所有乘客:

TripId PassengerName
1      admin
1      derp
1      alex
2      admin

有什么解决方案或指南吗?

首先查询行程表并获取必要的行程对象

Trip tripToSearch = context.Trips.SingleOrDefault(trip => trip.Id == 1);
tripToSearch.Passengers
然后收集找到的出行对象的乘客对象

Trip tripToSearch = context.Trips.SingleOrDefault(trip => trip.Id == 1);
tripToSearch.Passengers

上面将返回一个乘客对象列表,这些乘客对象与您搜索的不起作用的旅行对象关联。Trip和Passenger之间没有直接关系。我认为您可以直接查询TripPassenger表作为context.tripPassentials.Where(tp=>tp.TripId==1),这将返回TripId==1EF的所有TripPassenger对象,默认情况下不映射纯联接表。旅行和乘客之间可能有联系,但OP没有提及(帖子中没有太多信息)。很抱歉让你们困惑,无论如何我已经解决了我的问题。谢谢!@罗巴蒂库斯,这完全无关。问题重新标记。谢谢,达林。此外,我认为OP可能错误地表示了他的数据模型。如前所述,如果您想要在trip 1中选择乘客列表,您可以简单地查询TripPassenger表,因为它包含trip ID和乘客姓名。