Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.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
C# 使用lambda从数据库中提取字段_C#_Sql_Visual Studio 2013_Lambda - Fatal编程技术网

C# 使用lambda从数据库中提取字段

C# 使用lambda从数据库中提取字段,c#,sql,visual-studio-2013,lambda,C#,Sql,Visual Studio 2013,Lambda,我在尝试连接数据库中的多个表时遇到问题。事实上,我不太确定在创建连接时应该使用哪个主键。假设我有三个表,每个表都有自己的私钥,名为TownID、HotelID和RoomID。连接是通过酒店桌子上的外键进行的。所以我的问题是,如何使用给定的townID提取关于某个酒店房间的信息 先谢谢你 编辑:用外键编辑错误 Table Town ----------- TownId (PK) TownName Table Hotel ------------ HotelId (PK) HotelAddre

我在尝试连接数据库中的多个表时遇到问题。事实上,我不太确定在创建连接时应该使用哪个主键。假设我有三个表,每个表都有自己的私钥,名为TownID、HotelID和RoomID。连接是通过酒店桌子上的外键进行的。所以我的问题是,如何使用给定的townID提取关于某个酒店房间的信息

先谢谢你

编辑:用外键编辑错误

Table Town
-----------
TownId (PK)

TownName

Table Hotel
------------
HotelId (PK)

HotelAddress

HotelName

HotelTownId (FK)

HotelRoomId (FK)

Table Room
------------
RoomId (PK)

RoomNumber
如果以上是这些表的模式,那么您需要如下内容:

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();

您可以使用lambdas编写上述查询。但是,这种形式更具可读性。

欢迎使用堆栈溢出。请发布这些表的架构。旁注:至少据我所知,在任何RDBMS中都没有所谓的辅助键的概念。有主键和外键的概念。外键与另一个表的主键的主键相关联。感谢请确认您的实体之间的关系是否正确。一个城镇有0个或多个酒店,而一个酒店有1个或多个房间。那么,包含这些关系元素的数据库表是如何命名的呢?。城镇、酒店。房间?最后,保持关系的字段是如何命名的?Hotels有一个TownID字段,Rooms有一个HotelID字段?table Rooms有两个字段number和primary key,这两个字段在table Hotels中起外键的作用。table Hotels有三个字段。第一个是名称,第二个是主键,第三个是房间的外键。第三个表名为Towns,包含主键、名称和外键,这是表hotels的主键。谢谢您的回复。它通过在代码末尾添加simple.FirstOrDefault表达式来工作。顺便说一下,where子句有一个拼写错误。@user3123404欢迎你,伙计。我很高兴我帮了忙。谢谢你的评论,我改正了。