我试图重新在LINQ这个SQL查询:LINQ子查询多列
SELECT *
FROM Policies
WHERE PolicyID IN(SELECT PolicyID
FROM PolicyRegister
WHERE PolicyRegister.StaffNumber = @CurrentUserStaffNo
AND (PolicyRegister.IsPolicyAccepted = 0
OR PolicyRegister.IsPolicyAccepted IS NULL))
关系图的两个表:
这里是我的尝试至今:
var staffNumber = GetStaffNumber();
var policyRegisterIds = db.PolicyRegisters
.Where(pr => pr.StaffNumber == staffNumber && (pr.IsPolicyAccepted == false || pr.IsPolicyAccepted == null))
.Select(pr => pr.PolicyID)
.ToList();
var policies = db.Policies.Where(p => p.PolicyID.//Appears in PolicyRegisterIdsList)
我想我很接近,可能会做两个列表并使用Inters ect()不知何故,但我今天早上看了我的代码,并认为必须有一个更简单的方法来做到这一点。 LINQ应该是一个更可读的数据库语言吧?
提供的任何帮助非常感谢。
db.Policies.Where(P => policyRegisterIds。载有(p.PolicyID)) – jitender
尝试'policyRegisterIds.Contains(p.PolicyID)',但最好尽量减少请求的数量 – ASpirin
你在'Policies'和'PolicyRegisters'之间有一个虚拟关系吗?包含问题 – meorfi