我需要在任何記錄或者具有債券的賠償類型,或已債券放棄返回true。我認爲,由於內部聯接發生的方式,這不起作用。Linq查詢涉及4聯接的表,到多對多表
var HasBondorWaived = (from a in context.Allocations
join p in context.Permits on a.PermitGUID equals p.GUID
join i in context.Indemnities on a.IndemnityGUID equals i.GUID
join t in context.IndemnityTypes on a.IndemnityAreaTypeGUID equals t.GUID
where (p.GUID.Equals(PermitGuid)
&& (t.Description.Equals("Performance Bonds") || t.Description.Equals("Payment Bonds")))
|| p.BondRequirementWaived where p.GUID.Equals(PermitGuid)
select a).Any();
return HasBondorWaived;
我越來越近了。在「履約保證金」或「付款保證金」的情況下,我的確認工作正常,但在BondRequirementWaved的情況下不起作用。這是EF中的一個布爾值,在SQL服務器中也有一點。在BondRequirementWaved的情況下,它返回false。
using (var context = new KEPTEntities())
{
var HasBondorWaived = (from a in context.Allocations
join p in context.Permits on a.PermitGUID equals p.GUID
join i in context.Indemnities on a.IndemnityGUID equals i.GUID
join t in context.IndemnityTypes on i.IndemnityTypeGUID equals t.GUID
where (p.GUID.Equals(PermitGuid)
&& (t.Description.Equals("Performance Bonds")
|| t.Description.Equals("Payment Bonds")
|| p.BondRequirementWaived))
select a).Any();
return HasBondorWaived;
我覺得哪裏只對第4次加入。關閉括號在from前面的左括號是錯誤的。參見例如在以下網頁:https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b – jdweng