1
我有3個表:LINQ to SQL和加入問題
USER
=====
USER_ID(PK)
FISRT_NAME
LAST_NAME
...
ROLES
======
ROLE_ID (PK)
NAME
USER_ROLES
==========
USER_ID(PK, FK)
ROLE_ID(PK, FK)
我想提取所有用戶數據和他的所有角色(以逗號分隔)成單行。
Sometging這樣的:
1 | John | Smith | Power user, Administrator
2 | John | Doe | Guest
我不知道如何做到這一點。感謝您的幫助。
編輯:
我想是這樣的:
List<UserDTO> users = null;
using (CarShopDataContext dc = DB.GetContext())
{
users = (from u in dc.Users
select new UserDTO
{
UserId = u.UserId,
Username = u.Username,
FirstName = u.FirstName,
LastName = u.LastName,
Roles = ""
}).ToList();
foreach (var user in users)
{
var roles = (from ur in dc.UserRoles
join r in dc.Roles on ur.RoleId equals r.RoleId
where ur.UserId == user.UserId
select r.Name).ToList();
StringBuilder userRoles = new StringBuilder();
for (int j = 0; j < roles.Count; j++)
{
userRoles.Append(roles[j]);
if (j < roles.Count - 1)
userRoles.Append(", ");
}
user.Roles = userRoles.ToString();
}
}
return users;
我使用LINQ 2 SQL,我聚合函數收到錯誤:「無法轉換lambda表達式委託類型「System.Func'因爲一些返回類型i n該塊不會隱式轉換爲委託返回類型「 –
2010-06-23 09:03:08
請參閱已更新的答案。以前的LINQ試圖在整個匿名對象上執行聚集協調 - 我現在要求它只是簡單地選擇'RoleName'字段。 – 2010-06-23 09:54:41