2012-04-11 28 views
3

我有以下SQL語句T-SQL中的LINQ轉換

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

有你自己試了一些東西? (https://www.google.ca/search?ix=hca&sourceid=chrome&ie=UTF-8&q=linq+to+sql+examples) – 2012-04-11 13:13:02

+2

向您展示LINQ查詢僅有些用處。您需要在內存中或通過遠程LINQ提供程序(如LINQ to SQL或實體框架)來收集上下文,以使LINQ函數代替T-SQL。這就是爲什麼它首先讓你自己有用的原因。 – 2012-04-11 13:20:52

回答

2

好吧,假設您有一個名爲CorpsystemsCorpSystem對象的列表,以及一個名爲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 
        }; 

或者只是AffectedSystems具有的1 TaskItemId:

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

他有一個左外連接不是內連接 – 2012-04-11 13:22:02

+0

固定,謝謝Darren – mattytommo 2012-04-11 13:24:14

+1

很好的工作!保持好友 – 2012-04-11 13:24:31

1

請參閱以下問題SQL to LINQ Tool的答案,假設您不想親自完成此過程。