2017-06-13 103 views
0

我想在我的sql命令中返回分割查詢結果的逗號。 如下:linq to sql中的子查詢

Select [User].UserName, 
    (Select [Role].Name + ', ' 
      From 
      Security.UserRole  As UserRole 
       Inner Join 
      Security.[Role]   As [Role] 
       On UserRole.RoleId = [Role].RoleId 

      Where UserRole.UserId = [User].UserId 
      For Xml Path('') 
    ) 
    From Security.[User]   As [User] 

基本上每個用戶有多個角色,我要加載的角色名稱以逗號分隔格式爲每個用戶。

在SQL設置的結果是這樣的: enter image description here

有什麼辦法,我可以寫在LINQ此查詢?

感謝

回答

0

try代碼

創建方法獲取用戶角色特定用戶

Public String GetuserRoles(int userid) 
{ 
    string strroles=""; 
     (from UserRole in Security.UserRole 
      join Role in Security.Role on UserRole.RoleId equals Role.RoleId 
      where UserRole.UserId==userid 
      select new 
      { 
       strs = Role.Name + "," 
      }).ToList().ForEach(c => strroles = strroles + c.strs); 

    return strroles; 
} 

後發表您的LINQ查詢:

var result=(from p in Security.User select new { 
       UserName=p.UserName, 
       Roles=GetuserRoles(p.UserId) 
      }).ToList(); 
+0

謝謝回答,問題是我需要在odata方法中使用它,所以它應該是IQueriable。所以它應該全部在單個查詢中。 – ali

+0

如何可能單個查詢?請寫下查詢 –