使用 lambda 从数据库中提取字段
Field extraction using lambda from a database
我在尝试加入数据库中的多个 table 时遇到问题。事实上,我不太确定在创建连接时应该使用哪个主键。因此,假设我有三个 table,每个都有自己的私钥,名为 TownID、HotelID 和 RoomID。连接是通过 table 酒店中的外键建立的。所以我的问题是如何使用给定的 townID 提取有关特定酒店房间的信息?
提前致谢
编辑:用外键编辑了错误
Table Town
-----------
TownId (PK)
TownName
Table Hotel
------------
HotelId (PK)
HotelAddress
HotelName
HotelTownId (FK)
HotelRoomId (FK)
Table Room
------------
RoomId (PK)
RoomNumber
前提是以上是这些表的schema,那么你需要这样:
var result = (from h in db.Hotel
join t in db.Town
on h.HotelTownId equals t.TownId
join r in db.Room
on h.HotelRoomId equals r.RoomId
where t.TownId == townId
select r.RoomNumber).FirstOrDefault();
您可以使用 lambda 编写上述查询。然而,这种形式更具可读性。
我在尝试加入数据库中的多个 table 时遇到问题。事实上,我不太确定在创建连接时应该使用哪个主键。因此,假设我有三个 table,每个都有自己的私钥,名为 TownID、HotelID 和 RoomID。连接是通过 table 酒店中的外键建立的。所以我的问题是如何使用给定的 townID 提取有关特定酒店房间的信息?
提前致谢
编辑:用外键编辑了错误
Table Town
-----------
TownId (PK)
TownName
Table Hotel
------------
HotelId (PK)
HotelAddress
HotelName
HotelTownId (FK)
HotelRoomId (FK)
Table Room
------------
RoomId (PK)
RoomNumber
前提是以上是这些表的schema,那么你需要这样:
var result = (from h in db.Hotel
join t in db.Town
on h.HotelTownId equals t.TownId
join r in db.Room
on h.HotelRoomId equals r.RoomId
where t.TownId == townId
select r.RoomNumber).FirstOrDefault();
您可以使用 lambda 编写上述查询。然而,这种形式更具可读性。