无法将SQL转换为LINQ [英] Unable to Convert SQL to LINQ

查看:106
本文介绍了无法将SQL转换为LINQ的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是LINQ的新手。我有一个下面的SQL查询,我正在尝试获得LINQ等效语句。

I am new to LINQ. I have a folowing SQL query and I am trying to get LINQ equivalent statement.

SELECT orgNm.OrgNm
FROM OrgNm orgNM 
INNER JOIN ProspectClient pc
ON orgNM.OrgNmTypeId = 2
AND pc.ProspectClientID = orgNm.OrgId
AND orgNm.OrgId NOT IN (SELECT CloneOrgId FROM ClonedOrgInfo)
AND orgnm.orgId NOT IN (SELECT RelatedOrgId FROM OrgcRlshp)







谢谢...



AJ



已添加代码块,''SQL ''标签已添加[/ Edit]




Thanks...

AJ

Code block added, ''SQL'' tag added[/Edit]

推荐答案

让我们澄清,因为你在JOIN ON子句中添加了一些内容,并不意味着它属于那里。您的查询应该是这样的:

Let''s clarify, just because you add something in the JOIN ON clause, does not mean it belongs there. Your query should be this one:
SELECT orgNm.OrgNm
FROM OrgNm orgNM
INNER JOIN ProspectClient pc ON pc.ProspectClientID = orgNm.OrgId
WHERE orgNM.OrgNmTypeId = 2
AND orgNm.OrgId NOT IN (SELECT CloneOrgId FROM ClonedOrgInfo)
AND orgnm.orgId NOT IN (SELECT RelatedOrgId FROM OrgcRlshp)





以下是三个步骤的可能解释:



Here is one possible interpretation in three steps:

var re = from o in OrgNm
         join pc in ProspectClient on o.OrgId = pc.ProspectClientID
         where o.OrgNmTypeId = 2;

var ex = ClonedOrgInfo.Select(x => x.CloneOrgId).Union(OrgcRlshp.Select(y => y.RelatedOrgId));

var result = re.Where(r => !ex.Contains(re.OrgId));





由于LINQ to SQL使用延迟执行,因此使用的步数无关紧要。



Since LINQ to SQL is using deferred execution, it does not matter how many steps you use.


非常感谢ZoltánZörgő...你的解决方案解决了我的问题!



因为我是LINQ的新手,可以你建议我一个更好的方法/知识库,我可以利用我的LINQ编码技巧吗?





问候

AJ
Thanks a ton, Zoltán Zörgő... Your solution solves my question!

As I am new to LINQ, could you suggest me a better approach/knowledge base where I can leverage my LINQ coding skills?


Regards
AJ


这篇关于无法将SQL转换为LINQ的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆