我无法弄清楚这个sql语句的lambda等价物:
select * from Document
where Document.OrginalDocumentNumber
in (select documentAccess.DocumentId from documentAccess where userId='1')
问题是文件& documentaccess表彼此没有关系。
任何帮助都会非常感激。
答案 0 :(得分:3)
将EX替换为EXISTS,您将获得以下信息:
from d in dbContext.Documents
where dbContext.documentAccesses.Any(
x=>x.DocumentId == d.OrginalDocumentNumber && x.userId == '1' )
select d
答案 1 :(得分:0)
通常情况下,如果您有合理的导航属性,则可以直接避免join
或子查询:
var documents = from documentAccess in contex.DocumentAccesses
where documentAccess.UserId == 1
select documentAccess.Document;
您可能希望在结果上使用.Distinct()
,具体取决于您的数据。
类似地:
var documents = contex.DocumentAccesses
.Where(access => access.UserId == 1)
.Select(access => access.Document);
更好的是,如果你已经在上下文中有User
:
var documents = currentUser.DocumentAccesses.Select(access => access.Document);