【发布时间】:2021-05-30 21:06:09
【问题描述】:
我必须修复一个已经在 LINQ Lambda 中编写的查询,我在一个简单 SQL 查询中找到了修复,但现在我在将其转换为 LINQ 查询时遇到了一些麻烦,
这是我的 SQL 查询
select * from RequestItem_SubRequestItem x
where x.RequestItem_key = 1 and x.SubRequestItem_key in (
select o.SubRequestItem_key
from SubRequestItem_Entitlement o
inner join SubRequestItem sr on sr.SubRequestItem_key = o.SubRequestItem_key
where o.Entitlement_key = 2 and sr.Action = 'Add' )
下面是我的 LINQ C# 代码,我试图在其中插入包括内部连接在内的修复。
z.Entitlements = ARMContext.Context.SubRequestItem_Entitlement
.Where(o => o.Entitlement_key == z.AccessKey && !o.Role_key.HasValue && o.Entitlement.EntitlementConfiguration.UserVisible == true
&& (ARMContext.Context.RequestItem_SubRequestItem
.Where(x => x.RequestItem_key == requestItemKey)
.Select(y => y.SubRequestItem_key)
.Contains(o.SubRequestItem_key)))
.Join(ARMContext.Context.SubRequestItems, subrq => subrq.SubRequestItem_key, temp => requestItemKey, (subrq, temp) => subrq == temp)
以前的 C# LINQ 代码看起来像这样
z.Entitlements = ARMContext.Context.SubRequestItem_Entitlement
.Where(o => o.Entitlement_key == z.AccessKey && !o.Role_key.HasValue && o.Entitlement.EntitlementConfiguration.UserVisible == true
&& (ARMContext.Context.RequestItem_SubRequestItem
.Where(x => x.RequestItem_key == requestItemKey)
.Select(y => y.SubRequestItem_key)
.Contains(o.SubRequestItem_key)))
当我尝试根据我的条件在 LINQ 中插入 JOIN 时,我会看到此错误。
我的错误是什么?谁能告诉我正确的方法吗?
【问题讨论】:
-
将您的模型添加到问题中。你有导航属性吗?
-
@SvyatoslavDanyliv 嗨,我没有收到您的问题,但下面提到的解决方案确实可以正常工作。