C# 如何检查另一个用户是否在公司层次结构中处于同一级别或更低级别?
我有这个:C# 如何检查另一个用户是否在公司层次结构中处于同一级别或更低级别?,c#,sharepoint,active-directory,user-profile,C#,Sharepoint,Active Directory,User Profile,我有这个: UserProfile prof = getUserProfile(properties.CurrentUserId); UserProfile toCheck = getUserProfile(anotherUsersId); “prof”用户必须与“toCheck”用户处于更高级别或相同级别。如果“toCheck”位于较低级别,则他/她必须位于层次结构树的同一分支上。如果他们处于同一级别,他们的经理必须是相同的 有没有一种简单的方法可以检查这一点?这里有一些方法可以帮助您:
UserProfile prof = getUserProfile(properties.CurrentUserId);
UserProfile toCheck = getUserProfile(anotherUsersId);
“prof”用户必须与“toCheck”用户处于更高级别或相同级别。如果“toCheck”位于较低级别,则他/她必须位于层次结构树的同一分支上。如果他们处于同一级别,他们的经理必须是相同的
有没有一种简单的方法可以检查这一点?这里有一些方法可以帮助您:
function compare(manager, toCheck, prof)
{
toManager=toCheck.manager;
if (toManager!=null)
{
if (manager==tomanager || prof==tomanager)
{
return true;
}
else
{
return compare("", tomanager, prof);
}
}
else // he/she is the boss
{
return false;
}
}
...
if (prof.manager!=null)
{
compare(prof.manager, toCheck, prof);
}
else // he/she is the boss
{
return true;
}
在您的案例中,“级别”的定义是什么?一个用户的管理者要高出1级。公司里只有一位经理。所以层次结构树就像一棵真正的树,颠倒过来。我认为这是在使用Sharepoint UserProfile类(名称空间Microsoft.Office.Server.UserProfiles),我自己对此没有经验。如果不是这样,Vili需要发布其UserProfile类的代码。是的,这是一个SharePoint类。您使用的是Microsoft.Office.Server.UserProfiles命名空间还是旧的Microsoft.SharePoint.Portal命名空间?GetManager是解决方案。但这不是一个简单的方法(对我来说)需要递归。