Group (SharePoint group, domain group ) contain current user

    private bool AddUserIntoGroup(SPWeb web, string sGroupName, int iUserID)
    {
        bool res = false;
        try
        {
            web.AllowUnsafeUpdates = true;
            SPGroup oGroup = web.SiteGroups[sGroupName];
            SPUser oUser = web.AllUsers.GetByID(iUserID);
            if (oUser != null)
            {
                oGroup.AddUser(oUser);
                oGroup.Update();
                res = true;
            }
            web.Update();
        }
        catch { }
        return res;
    }
    private bool CreateSiteGroup(SPWeb rootWeb, string sGroupName, string sGroupDescription)
    {
        bool res = false;
        try
        {
            rootWeb.AllowUnsafeUpdates = true;
            SPGroupCollection collGroups = rootWeb.SiteGroups;
            string sLoginName = rootWeb.CurrentUser.LoginName;
            SPUser oUser = rootWeb.SiteUsers[sLoginName];
            SPMember oMember = rootWeb.SiteUsers[sLoginName];
            collGroups.Add(sGroupName, oMember, oUser, sGroupDescription);
            res = true;
            rootWeb.Update();
        }
        catch (Exception ex)
        {
            Response.Write("Error:" + ex.Message + "<br/>");
            return false;
        }
        return res;
    }
    private void DeleteSiteGroup(SPWeb web, string groupName)
    {
        try
        {
            web.AllowUnsafeUpdates = true;
            SPGroupCollection groups = web.SiteGroups;
            groups.Remove(groupName);
            web.Update();
        }
        catch { }
    }
    private bool IsContainCurrentUser(object obj)
    {
        bool result = false;
        if (obj == null)
        {
            return false;
        }
        SPSite securitySite = null;
        SPWeb securityWeb = null;
        SPWeb tempWeb = null;
        try
        {
            SPFieldUserValueCollection approversCollection;
            SPWeb web = SPContext.Current.Web;
            web.AllowUnsafeUpdates=true;

            bool groupFlag = false;
            string groupName = "Grp" + Guid.NewGuid().ToString();
            // Response.Write("groupName: " + groupName + "<br/>");
            SPSecurity.RunWithElevatedPrivileges(delegate()
            {
                using (securitySite = new SPSite(SPContext.Current.Site.ID))
                {
                    using (securityWeb = securitySite.RootWeb)
                    {
                        groupFlag = CreateSiteGroup(securityWeb, groupName, "");
                        //Response.Write("groupFlag: " + groupFlag.ToString() + "<br/>");

                    }
                }
            });

            approversCollection = (SPFieldUserValueCollection)obj;
            int id = SPContext.Current.Web.CurrentUser.ID;
            foreach (SPFieldUserValue spFieldUserValue in approversCollection)
            {
                if (spFieldUserValue.User == null)
                {
                    //Response.Write("Group" + spFieldUserValue.LookupValue+ "<br/>");
                    if (web.SiteGroups[spFieldUserValue.LookupValue].ContainsCurrentUser)
                    {
                        result = true;
                        break;
                    }
                }
                else
                {
                    if (spFieldUserValue.LookupId == id)
                    {
                        result = true;
                        break;
                    }
                    else
                    {
                        AddUserIntoGroup(securityWeb, groupName, spFieldUserValue.LookupId);
                    }
                }
            }

            //System.Threading.Thread.Sleep(500);
             tempWeb = SPContext.Current.Site.OpenWeb();
            if (!result)
            {
                //validate domain user has current user
                if (groupFlag)
                {
                    //Response.Write(SPContext.Current.Web.SiteGroups[groupName].Users.Count);

                    SPGroup group = tempWeb.SiteGroups[groupName];
                    if (group.ContainsCurrentUser)
                    {
                        result = true;
                    }
                }

            }
            //delete group
            DeleteSiteGroup(securityWeb, groupName);
        }
        catch (Exception ex)
        {
            //return false;
            Response.Write("error:" + ex.Message);
        }
        finally
        {
            if (securityWeb != null)
            {
                securityWeb.Dispose();
                securityWeb = null;
            }
            if (securitySite != null)
            {
                securitySite.Dispose();
                securitySite = null;
            }
            if (tempWeb != null)
            {
                tempWeb.Dispose();
                tempWeb = null;
            }
        }
        return result;
    }

用法:bool flag=!IsContainCurrentUser(sourceItem["阅读人员"]);

原文地址:https://www.cnblogs.com/gzh4455/p/3069468.html