2016-02-08 56 views
2

我在下面編寫Linq版本的SQL腳本。但是,我無法做到。我無法做到SUBQUERY部分。 T_PROJECTT_SERVICE_TRANSACTION表通過PROJECT_IDP.ID相互關聯,它是一個外鍵。我該如何編寫它的Linq版本?需要在Linq中做一個子查詢

SELECT P.PROJECT_NAME, P.TOTAL_TIME, 
    (
     P.TOTAL_TIME - (SELECT SUM(GIVEN_SERVICE_TIME) 
         FROM T_SERVICE_TRANSACTION 
         WHERE PROJECT_ID=P.ID) 
    ) 
FROM T_PROJECT P 
+0

你你的實體類是什麼樣子? –

回答

3

嘗試沿着這些路線的東西..

var result = Project.Select(p => new { 
    ProjectName = p.ProjectName, 
    TotalTime = p.TotalTime, 
    CustomColumn = p.TotalTime - p.T_Service_Transactions 
     .Sum(t=> t.GivenServiceTime) 
}); 
+0

非常感謝,我認爲它會工作,但我得到錯誤..... System.InvalidOperationException:傳遞到字典中的模型項是類型'System.Collections.Generic.List'1 [<> f__AnonymousType1'10 [System.String,System.Nullabl ...... –

+1

@ARIFYILMAZ沒問題!如果沒有看到代碼的其餘部分,我並不完全確定錯誤,但如果您在別處使用結果,則可能需要將結果投影到自己的類型中。這聽起來像你有一個不打算接受列表的類型字典,或者列表中的匿名類型。你可以使用.ToDictionary方法 - 第一個參數產生鍵(可能是p => p.ProjectName),第二個產生的值需要與你的字典所期望的類型匹配。 –