我有三张桌子"应用程序"," UserPermissions"和" ADPermissions"。
应用程序表包含应用程序列表。 UserPermissions表定义允许哪个用户管理特定应用程序。同样地" ADPermissions" table定义哪个AD组有权管理应用程序。
当用户登录管理应用程序(网站)时,我必须根据他的别名和他所属的所有AD组显示他有权访问的所有应用程序。我正在尝试编写如下所示的Linq查询,但这给了我重复的结果。我还有其他一些问题。
//List of groups from AD
var groups = (from g in UserPrincipal.Current.GetGroups()
select g.Name).ToArray<String>();
IdentityContext context = new IdentityContext();
var apps =
(from a in context.Applications
join up in context.UserPermissions on a.Id equals up.ClientId into appUsers
from up in appUsers.DefaultIfEmpty()
join gp in context.ADPermissions on a.Id equals gp.ClientId into appGroups
from gp in appGroups.DefaultIfEmpty()
select new
{
Id = a.Id,
ClientId = a.ClientId,
DisplayName = a.ClientName,
Enabled = a.Enabled,
ClientUri = a.ClientUri,
UserPermissions = a.UserPermissions,
GroupPermissions = a.ADPermissions
}).ToList().Distinct();
请帮忙。