gpt4 book ai didi

c# - Linq 组合左连接数据

转载 作者:行者123 更新时间:2023-11-30 15:12:16 25 4
gpt4 key购买 nike

假设我有以下数据库:

Users
-------
UserId (PK)
UserName

Roles
-----
RoleId (PK)
RoleName

UserRoles
---------
UserId (PK)
RoleId (PK)

用户 1-M 用户角色 M-1 角色

使用 LinqToSQL,我想返回以下集合:

[User1], [Role1, Role2, Role3]
[User2], [Role2, Role3]
[User3], []

等等...

创建此 LinqToSql 查询的最有效方法是什么?

此外,如果我想创建一个过滤器以仅返回具有 Role1 的用户,那需要做什么?

谢谢。

最佳答案

定义“高效”。但除此之外……

from u in dataContext.Users
select new { User = u, Roles = u.UserRoles.Select(ur => ur.Role) }

并通过 RoleID 过滤用户:

from u in dataContext.Users
where u.UserRoles.Any(ur => ur.RoleID == 1)
select u

或者通过一些其他的 Role 属性,比如 Name:

from u in dataContext.Users
where u.UserRoles.Any(ur => ur.Role.Name == "Role 1")
select u

将它们组合在一起:

from u in dataContext.Users
select new
{
User = u,
Roles = from ur in u.UserRoles
where ur.RoleID == 1 || ur.Role.Name == "Role 1"
select ur.Role
}

关于c# - Linq 组合左连接数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1488414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com