什么是 lambda 等价于 SQL“in”语句
本文关键字:in 语句 SQL lambda 等价于 什么 | 更新日期: 2023-09-27 18:34:17
我无法找出这个sql语句的lambda等价物:
select * from Document
where Document.OrginalDocumentNumber
in (select documentAccess.DocumentId from documentAccess where userId='1')
问题是文档和文档访问表彼此没有关系。
任何帮助将不胜感激。
将 IN 替换为 EXISTS,你会得到以下内容:
from d in dbContext.Documents
where dbContext.documentAccesses.Any(
x=>x.DocumentId == d.OrginalDocumentNumber && x.userId == '1' )
select d
通常,如果您具有合理的导航属性,则可以直接避免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);