0

我在创建查询时遇到问题。

我想要实现的是创建一个符合以下条件的查询

   Show all records in table house where 
tbl_house.townId =tbl_town.townId 
and house.type = “3bedrooms”

到目前为止我尝试过的

 var house = 
    From m in db.tbl_house 
    Where m.townId ==  tbl_town.townId && m.Bedrooms == "3bedrooms" 
                   Select m

任何帮助或建议将不胜感激

更新

一、二、三三个地产代理 每个地产代理都有一个帐户,所以当地产代理登录时,我只想显示具有指定房屋类型的那个城镇的房屋。

所有房屋都有一个townID

示例:房屋 1 的 townId 可能为 3,其中 = town3 和 housetype = “3bedrooms”</p>

房子 2 的 townId 可能为 3,即 town3 和 housetype = “2bedrooms”</p>

房屋 3 的 townId 可能为 4,即 town4 和 housetype = “2bedrooms”</p>

因此,我要做的是选择所有 townId 为 3 且 housetype =“3bedrooms” 的房屋,并将它们展示给与 townId 相关联的房地产代理机构。

4

1 回答 1

0

我仍然不太清楚您的要求是什么,但是您似乎在要求“表 A('house')中在表 B('town')中具有匹配记录的所有记录”。如果这不是真的,您需要解释“tbl_house.townId = tbl_town.townId”的含义,因为否则它没有任何意义。如果这您想要的,那么您只需要检查外键字段是否有值:

var house = from m in db.tbl_house
            where m.townId.HasValue() && m.Bedrooms == "3bedrooms"
            select m;

您尝试的查询的问题在于tbl_town.townId您将其放在哪里没有意义。tbl_town是一组对象,代表整个表。在这种情况下,townId是一个字段 定义,但您试图将其与tbl_house实体集中单个实体中的实际字段进行比较。两者不是一回事,不能直接比较。这就像说where m.Bedrooms = String- 它只是在语法上不正确。

编辑:

根据您更新的问题,您似乎知道您正在寻找的城镇的城镇 ID;在这种情况下,只需过滤即可。我不确定你为什么在知道你想要的 ID 时尝试使用“tbl_town.townId”,基于代理机构。

这里的语法完全取决于你的关系方向;例如,假设您有一个具有 TownId 的 Agency 对象,您只需要对其进行过滤:

var agency = this.GetTheCurrentAgencySomehow();
var house = from m in db.tbl_house
            where m.townId == agency.townId && m.Bedrooms == "3bedrooms"
            select m;

另一方面,如果你的 Town 对象有一个 AgencyId,你可能会使用导航属性从 house -> town -> Agency 获取:

var agency = this.GetTheCurrentAgencySomehow();
var house = from m in db.tbl_house
            where m.town.agencyId == agency.agencyId && m.Bedrooms == "3bedrooms"
            select m;

如果不了解更多关于数据模型的实际实现细节,就没有办法更具体。

于 2012-04-25T03:12:49.243 回答