T-SQL到LINQ的转换

时间:2012-04-11 13:10:31

标签: c# .net sql linq linq-to-sql

我有以下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吗?

谢谢。

2 个答案:

答案 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的答案,假设您不想手动完成此过程。