获取用户Id-SharePoint 2010

获取用户Id-SharePoint 2010,sharepoint,sharepoint-2010,Sharepoint,Sharepoint 2010,我有一个列,其中包含用户的名称。列类型为单行文本,用户名以LastName、FirstName格式存储 我想获取存储用户名的用户id和电子邮件地址 我试过了 string fieldValue = item["ProjectManager"] as string; SPFieldUserValueCollection users = new SPFieldUserValueCollection(item.Web, fieldValue); if (users != null) {

我有一个列,其中包含用户的名称。列类型为单行文本,用户名以LastName、FirstName格式存储

我想获取存储用户名的用户id和电子邮件地址

我试过了

 string fieldValue = item["ProjectManager"] as string;
 SPFieldUserValueCollection users = new SPFieldUserValueCollection(item.Web, fieldValue);
 if (users != null)
 {
     /* The users.count is always zero */
      foreach (SPFieldUserValue user in users)
      {
        if (user.User != null)
        {
        }
      }
   }
我无法将列类型更改为Person或Group,它将保留为单行文本。请让我知道如何才能做到这一点。我已经试了几个小时了。

试试这个:

public SPUser GetUser(SPWeb web, string userstring)
{
    var user = FetchUser(web, userstring);
    if (user == null)
    {
    SPPrincipalInfo info = SPUtility.ResolvePrincipal(web, userstring, SPPrincipalType.User, SPPrincipalSource.All, null, false);
    if (info!=null)
        user = FetchUser(web, info.LoginName);
    }
    return user;
}

public SPUser FetchUser(SPWeb web, string userstring)
{
    return web.AllUsers.Cast<SPUser>().FirstOrDefault(
    i => i.Name == userstring || i.LoginName == userstring || i.Email == userstring);
}

谢谢你的回复,路易斯。我发现错误SPUserCollection不包含行返回web.AllUsers.Cast()的Cast定义。FirstOrDefaultYou需要在顶部包含Linq命名空间:
var user = GetUser(item.Web,fieldValue )