public static void ExecuteMethod_UpdateGroupContainerMembership(TBRGroupRoot groupRoot, AccountRootAndContainer[] accountRootsAndContainers, GroupContainer groupContainer) { string groupID = groupRoot.Group.ID; var collaborators = accountRootsAndContainers. Select(acctR => new { Account = acctR.AccountRoot.Account, AccountContainer = acctR.AccountContainer, Profile = acctR.AccountContainer.AccountModule.Profile, GroupRole = acctR.AccountRoot.Account.GroupRoleCollection.CollectionContent.First( role => role.GroupID == groupID) }); var moderators = collaborators.Where(coll => TBCollaboratorRole.HasModeratorRights(coll.GroupRole.GroupRole)).ToArray(); var pendingCollaborators = collaborators.Where( coll => TBCollaboratorRole.IsRoleStatusValidMember(coll.GroupRole.RoleStatus) == false); var fullCollaborators = collaborators.Where( coll => TBCollaboratorRole.IsRoleStatusValidMember(coll.GroupRole.RoleStatus) == true); groupContainer.GroupProfile.Moderators.CollectionContent.Clear(); groupContainer.GroupProfile.Moderators.CollectionContent. AddRange(moderators. Select(mod => { var moderator = Moderator.CreateDefault(); moderator.ModeratorName = mod.Profile.FirstName + " " + mod.Profile.LastName; return(moderator); }).OrderBy(mod => mod.ModeratorName)); groupContainer.Collaborators.CollectionContent.Clear(); groupContainer.Collaborators.CollectionContent.AddRange( fullCollaborators.Select(coll => { Collaborator collaborator = Collaborator.CreateDefault(); collaborator.AccountID = coll.Account.ID; collaborator.CollaboratorName = coll.Profile.FirstName + " " + coll.Profile.LastName; collaborator.Role = coll.GroupRole.GroupRole; return(collaborator); }) ); groupContainer.PendingCollaborators.CollectionContent.Clear(); groupContainer.PendingCollaborators.CollectionContent.AddRange( pendingCollaborators.Select(coll => { Collaborator collaborator = Collaborator.CreateDefault(); collaborator.AccountID = coll.Account.ID; collaborator.CollaboratorName = coll.Profile.FirstName + " " + coll.Profile.LastName; collaborator.Role = coll.GroupRole.GroupRole; return(collaborator); }) ); }