T-SQL 到 LINQ 的转换
本文关键字:转换 LINQ T-SQL | 更新日期: 2023-09-27 18:30:40
我有以下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 吗?
谢谢。
好的,
假设您在名为 Corpsystems
的变量中有一个CorpSystem
对象列表,在一个名为 AffectedSystems
的变量中有一个AffectedSystem
对象列表。请尝试以下操作:
编辑:要加入所有受影响的系统,请尝试以下操作:
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
};
请参阅以下 SO 问题的 SQL 到 LINQ 工具的解答,假设您不想手动完成该过程。