我有以下表结构
用户 ID
类型 ID isBool
UsersTypes 用户身份 类型
我想根据id和isBool选择所有UserTypes。
我试过了这个查询
var q = from usertype in usertypes
from type in types
where type.isBool == false
where userstypes.user == id
select usertype;
但这并没有像预期的那样奏效。我的问题是:
答案 0 :(得分:4)
您的查询不会在任何公共字段上加入这两个表:
var q = from u in usertypes
join t in types on u.typeid equals t.id
where t.isBool == false && usertypes.user == id
select u;
join和where子句之间存在差异,具体取决于它们的使用方式。无论哪种方式,首选使用连接是因为LINQ-to-SQL将生成内连接而不是 hash 交叉连接(然后根据where子句进行过滤)。
您不需要括号。您可以包含它们,因为它们在某些情况下确实有助于提高可读性。
答案 1 :(得分:1)
var q = from usertype in usertypes
from type in types
where type.isBool == false
where usertype.user == id
where usertype.typeid = type.id //join criteria
select usertype;