我在创建查询时遇到了问题。
我想要实现的是创建符合以下条件的查询
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
示例:house 1的townId为3,其中= town3,housetype =“3bedrooms”
house 2的townId为3,= town3,housetype =“2bedrooms”
3号房子的townId为4,其中= town4,housetype =“2bedrooms”
所以我要做的就是选择所有拥有townId为3且housetype =“3bedrooms”的房屋 并将它们展示给拥有3个城镇的地产代理商。
答案 0 :(得分: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,您可能会使用导航属性来获取房屋 - >镇 - >机构:
var agency = this.GetTheCurrentAgencySomehow();
var house = from m in db.tbl_house
where m.town.agencyId == agency.agencyId && m.Bedrooms == "3bedrooms"
select m;
如果不了解数据模型的实际实现细节,就无法真正更具体。