2010-04-07 24 views
0

對於一個db人,LINQ可能會令人沮喪。我需要將以下SQL轉換爲Linq。我如何獲得這個SQL到LINQ?多組

SELECT COUNT(o.objectiveid), COUNT(distinct r.ReviewId), l.Abbreviation 
FROM Objective o 
JOIN Review r 
    on r.ReviewId = o.ReviewId 
    and r.ReviewPeriodId = 3 
    and r.IsDeleted = 0 
JOIN Position p 
    on p.PositionId = r.EmployeePositionId 
    and p.DivisionId = 2 
JOIN Location l 
    on l.LocationId = p.LocationId  
GROUP BY l.Abbreviation  

group by nested example可能是我必須去的方式,但不確定。 做一組由我用下面的代碼:

var query = from rev in db.Reviews 
           .Where(r => r.IsDeleted == false && r.ReviewPeriodId == reviewPeriodId) 
       from obj in db.Objectives 
           .Where(o => o.ReviewId == rev.ReviewId && o.IsDeleted == false) 
       from pos in db.Positions 
           .Where(p => rev.EmployeePositionId == p.PositionId && p.IsDeleted == false && p.DivisionId == divisionId) 
       from loc in db.Locations 
           .Where(l => pos.LocationId == l.LocationId) 
       group loc by loc.Abbreviation into locgroup 

       select new ReportResults 
       { 
       KeyId = 0, 
       Description = locgroup.Key, 
       Count = locgroup.Count() 
       }; 

    return query.ToList(); 

什麼是正確的方法是什麼?

感謝

回答

1

我知道你在問一個具體的,但也有一些工具,在那裏你也許可以利用學習SQL到LINQ。檢查出來,看看他們是否幫助!通過第一個工具運行你的SQL查詢,看看它出現了什麼。

Convert SQL to LINQ

LinqPad

+1

它配備了一個錯誤。第一個工具無法處理Count()。 – 2010-04-07 20:30:20