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 吗?

谢谢。

T-SQL 到 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 工具的解答,假设您不想手动完成该过程。