C# 将SQL查询转换为LINQ Lambda C

C# 将SQL查询转换为LINQ Lambda C,c#,sql,linq,C#,Sql,Linq,我必须修复一个已经在LINQ Lambda中编写的查询,我在一个简单的SQL查询中找到了修复方法,但现在我在将其转换为LINQ查询时遇到了一些麻烦 这是我的SQL查询 从RequestItem_子RequestItem x中选择* 其中x.RequestItem_key=1和x.SubRequestItem_key in 选择o.SubRequestItem_键 从子请求项_权利o sr.SubRequestItem_key=o.SubRequestItem_key上的内部联接子请求项sr 其中

我必须修复一个已经在LINQ Lambda中编写的查询,我在一个简单的SQL查询中找到了修复方法,但现在我在将其转换为LINQ查询时遇到了一些麻烦

这是我的SQL查询

从RequestItem_子RequestItem x中选择* 其中x.RequestItem_key=1和x.SubRequestItem_key in 选择o.SubRequestItem_键 从子请求项_权利o sr.SubRequestItem_key=o.SubRequestItem_key上的内部联接子请求项sr 其中o.o.U键=2,sr.Action='Add' 下面是我的LINQ C代码,我试图在其中插入包括内部连接的修复程序

z、 授权=ARMContext.Context.SubRequestItem\u授权 其中o=>o.authentication\u key==z.AccessKey&!o、 Role_key.HasValue&&o.Authentication.AuthenticationConfiguration.UserVisible==true &&ARMContext.Context.RequestItem\ u子RequestItem .Wherex=>x.RequestItem_key==requestItemKey .Selecty=>y.SubRequestItem\u键 .Containso.SubRequestItem_键 .JoinARMContext.Context.SubRequestItems,subrq=>subrq.SubRequestItem_键,temp=>requestItemKey,subrq,temp=>subrq==temp 如前所述,C LINQ代码如下所示

z、 授权=ARMContext.Context.SubRequestItem\u授权 其中o=>o.authentication\u key==z.AccessKey&!o、 Role_key.HasValue&&o.Authentication.AuthenticationConfiguration.UserVisible==true &&ARMContext.Context.RequestItem\ u子RequestItem .Wherex=>x.RequestItem_key==requestItemKey .Selecty=>y.SubRequestItem\u键 .Containso.SubRequestItem_键 当我尝试根据我的条件在LINQ中插入连接时,我会看到这个错误。


我犯了什么错?有人能告诉我一个正确的方法吗?

我认为这应该足以满足您的需要,尽管您可能需要更改其他代码,这些代码依赖于您的{user,add}子RequestItem_权限表

请看一下。我相信你必须做出这些改变

.Join(ARMContext.Context.SubRequestItems, user => user.SubRequestItem_key, subreqItems => subreqItems.SubRequestItem_key, (user, subreqItems) => new { user, subreqItems })
.Where(Action => Action.subreqItems.Action == z.ApprovalAction)

您可以使用此查询。我完全匹配了SQL查询

var query = ARMContext.Context.RequestItem_SubRequestItem
     .Where(a => a.RequestItem_key == 1 && a.RequestItem_key == (ARMContext.Context.SubRequestItem_Entitlement
     .Join(ARMContext.Context.SubRequestItems,
     right => right.SubRequestItem_key,
     left => left.SubRequestItem_key,
     (right, left) => new
     {
        right = right,
        left = left
     })
     .Where(x => x.right.Entitlement_key == 2 && x.left.Action == "Add" && x.right.SubRequestItem_key == a.RequestItem_key).Select(y => y.right.SubRequestItem_key)).FirstOrDefault());

将您的模型添加到问题中。你们有导航属性吗?@SvyatoslavDanyliv嗨,我不明白你们的问题,但下面提到的解决方案确实有效。