我有以下SQL语句
SELECT
c.CorpSystemID, c.SystemName ,
case when a.TaskItemID is NULL then 'false' else 'true' end as Assigned
FROM CorpSystems c
LEFT OUTER JOIN
(SELECT CorpSystemID, TASKItemID
FROM AffectedSystems
where TASKItemID = 1) a ON c.CorpSystemID = a.CorpSystemID
有人可以帮助我将此声明转换为LINQ吗?
谢谢。
答案 0 :(得分:3)
好的,假设您在名为CorpSystem
的变量中列出了Corpsystems
个对象,并在名为AffectedSystem
的变量中列出了AffectedSystems
个对象。请尝试以下方法:
编辑:要在所有受影响的系统上加入,请尝试以下操作:
var matches = from c in CorpSystems
join a in AffectedSystems on c.CorpSystemId equals a.CorpSystemId into ac
from subSystem in ac.DefaultIfEmpty()
select new
{
c.CorpSystemId,
c.SystemName,
Assigned = subSystem != null && subSystem.TaskItemId != null
};
或仅适用于TaskItemId为1的受影响系统:
var matches = from c in CorpSystems
join a in AffectedSystems.Where(as => as.TaskItemId == 1)
on c.CorpSystemId equals a.CorpSystemId into ac
from subSystem in ac.DefaultIfEmpty()
select new
{
c.CorpSystemId,
c.SystemName,
Assigned = subSystem != null && subSystem.TaskItemId != null
};
答案 1 :(得分:1)
请参阅以下SO问题SQL to LINQ Tool的答案,假设您不想手动完成此过程。