2017-02-17 72 views
0

我有這個SQL,並希望將其轉換爲LINQ。該SQL是用SUM合併在db列,我想這樣做的LINQ:SQL與SUM()轉換爲LINQ

SELECT 
[company] 
    ,[employeeid] 
    ,[year] 
    ,[period] 
    ,[project] 
    ,[activity] 
    ,SUM(hours1) as day1 
    ,SUM(hours2) as day2 
    ,SUM(hours3) as day3 
    ,SUM(hours4) as day4 
    ,SUM(hours5) as day5 
    ,SUM(hours6) as day6 
    ,SUM(hours7) as day7 
    ,[projecttype] 
    ,[runtableid] 
FROM ExportHoursToERP 
where runtableid = 6090 
group by [company], [employeeId],[year],[period],[project],[activity],[projecttype],[runtableid] 

這是我一直沒有成功到目前爲止已經試過:

var DbRows = from r in dal.ExportHoursToERPs 
       where r.runtableid.Equals(6090) 
       group r by new { r.company, r.employeeid, r.year, r.period, r.project, r.activity, r.projecttype, r.runtableid } into og 
       select new 
       { 
        company = r.company, 
        Employee = r.employee, 
        Year = r.year, 
        WeekNo = r.period, 
        Project = r.project, 
        Activity = r.activity, 
        day1 = og.Sum(y => y.hours1) 
        day2 = og.Sum(y => y.hours2) 
        day3 = og.Sum(y => y.hours3) 
        day4 = og.Sum(y => y.hours4) 
        day5 = og.Sum(y => y.hours5) 
        day6 = og.Sum(y => y.hours6) 
        day7 = og.Sum(y => y.hours7) 
        ProjectType = r.projecttype, 
        RuntableId = r.runtableid 
       }; 
+1

什麼是不成功的?你有錯誤嗎?錯誤的結果?還有別的嗎? – Chris

+1

你有錯誤?查詢看起來不錯,我猜。另外,不應該用引號 - 'r.runtableid.Equals(「6090」)'? – TheUknown

回答

0

取而代之的是

company = r.company 

使用本:

company = og.Key.company 

這是因爲您想要訪問屬於分組鍵的屬性。
當然,您需要爲屬於分組對象的所有屬性應用相同的系統

+0

感謝massino,使用Key解決了我的問題:-) – rnesbakk