/// <summary> /// Gets the permission items as a dictionary. /// </summary> /// <returns>The permission items.</returns> public IReadOnlyList <PermissionItemStatus> GetItems() { if (items != null) { return(items); } var temp = new Dictionary <string, List <string> >(); foreach (var item in GroupPermissions) { var perms = item.GetPermissionList(); foreach (var p in perms) { if (string.IsNullOrWhiteSpace(p)) { continue; } var key = p.Trim(); if (!temp.ContainsKey(key)) { temp[key] = new List <string>(); } temp[key].Add(item.TargetId); } } if (items != null) { return(items); } var col = UserPermission?.GetPermissionList()?.ToList() ?? new List <string>(); if (ClientPermission != null) { col.AddRange(ClientPermission.GetPermissionList()); } items = col.Distinct().Select(p => { if (string.IsNullOrWhiteSpace(p)) { return(null); } var key = p.Trim(); temp.TryGetValue(key, out var g); return(new PermissionItemStatus(key, true, g)); }).Where(p => p != null).ToList().AsReadOnly(); return(items); }