2017-08-09 32 views
0

我有這樣的SQL查詢(簡化的例子),以SQL查詢?我有超過500名用戶,可能還有大約十幾個角色。它沒有產生相同的查詢,一樣的結果(內置的SQL演示這裏http://sqlfiddle.com/#!6/c54fc/4級聯解釋在單個查詢

。(編輯:添加LINQ) 這是LINQ我有一個生成多個查詢:

var userroles = dc.UserRoles 
    .Select(ua => new 
    { 
     ua.UserID, 
     Roles = string.Join(", ", 
      dc.UserRoles 
       .Where(ur => ur.UserID == ua.UserID) 
       .Select(ur => ur.RoleName) 
       .Distinct()) 
    }); 
+0

爲什麼不把它作爲存儲過程呢?不確定Linq-to-sql,但我知道EF會將存儲過程轉變爲上下文中的方法調用。 – juharr

+0

這是我的備份計劃@juharr,但如果可能在linq中,我想學習,所以我可以比較結果 – SumGuy

回答

0

對不起,我不知道這是否會爲工作的LINQ到SQL,但是這是你如何與類的列表做到這一點:

var groupedUserRoles = userRoles 
    .GroupBy(ur => ur.UserID) 
    .Select(ur => new 
     { 
      UserId = ur.Key, 
      Roles = ur.Select(r => r.RoleName) 
     }) 
    .ToList(); 

groupedUserRoles.ForEach(ur => 
    Console.WriteLine($"UserID: {ur.UserId}, Roles: {string.Join(", ", ur.Roles)}")); 

輸出

enter image description here