C# NET:查询属于特定项目的项目管理员?

C# NET:查询属于特定项目的项目管理员?,c#,web-services,rally,C#,Web Services,Rally,我正在寻找一个列表对象,该对象由特定工作区中特定项目的项目管理员填充。 想要一些可以查询API以检索所有项目管理员电子邮件地址的示例代码。 下面是我尝试过的一些示例代码 public void getProjectAdmins(string workspaceRef, string projectRef) { this.EnsureRallyIsAuthenticated(); Request projectAdminRequest = new

我正在寻找一个列表对象,该对象由特定工作区中特定项目的项目管理员填充。 想要一些可以查询API以检索所有项目管理员电子邮件地址的示例代码。 下面是我尝试过的一些示例代码

    public void getProjectAdmins(string workspaceRef, string projectRef)
    {
        this.EnsureRallyIsAuthenticated();

        Request projectAdminRequest = new Request("User");
        projectAdminRequest.Workspace = workspaceRef;
        projectAdminRequest.Project = projectRef;
        projectAdminRequest.ProjectScopeUp = RallyConstant.ProjectScopeUp;
        projectAdminRequest.ProjectScopeDown = RallyConstant.ProjectScopeDown;

        projectAdminRequest.Fetch = new List<string>()
        {
            "Admin", "Email"
        };

        try
        {
            //query the items in the list
            projectAdminRequest.Query = new Query();
            QueryResult result = _rallyRestApi.Query(projectAdminRequest);

            //iterate through the result set
            foreach (var admin in result.Results)
            {
                var adminResult = admin[RallyConstant.Owner];
                if (adminResult != null)
                {
                    var x = adminResult[RallyQueryConstant.ReferenceObject];

                }
            }
        }
        catch (WebException)
        {
            Console.WriteLine(RallyQueryConstant.WebExceptionMessage);
        }
    }
public void getProjectAdmins(字符串workspaceRef,字符串projectRef)
{
此.EnsureRallyIsAuthenticated();
请求projectAdminRequest=新请求(“用户”);
projectAdminRequest.Workspace=workspaceRef;
projectAdminRequest.Project=projectRef;
projectAdminRequest.ProjectScopeUp=RallyConstant.ProjectScopeUp;
projectAdminRequest.ProjectScopeDown=RallyConstant.ProjectScopeDown;
projectAdminRequest.Fetch=新列表()
{
“管理员”、“电子邮件”
};
尝试
{
//查询列表中的项目
projectAdminRequest.Query=新查询();
QueryResult result=\u rallyRestApi.Query(projectAdminRequest);
//遍历结果集
foreach(result.Results中的var admin)
{
var adminResult=admin[RallyConstant.Owner];
如果(adminResult!=null)
{
var x=adminResult[RallyQueryConstant.ReferenceObject];
}
}
}
捕获(WebException)
{
控制台.WriteLine(RallyQueryConstant.WebExceptionMessage);
}
}

您应该能够查询筛选到相关项目的ProjectPermission端点,如下所示:

Request projectAdminRequest = new Request("ProjectPermission");
projectAdminRequest.Workspace = workspaceRef;
projectAdminRequest.Fetch = new List<string>() {"User", "EmailAddress"};
projectAdminRequest.Query = Query.And(
    new Query("Project", Query.Operator.Equals, "/project/12345"),
    new Query("Role", Query.Operator.Equals, "Project Admin"));
Request projectAdminRequest=新请求(“ProjectPermission”);
projectAdminRequest.Workspace=workspaceRef;
projectAdminRequest.Fetch=新列表(){“用户”,“电子邮件地址”};
projectAdminRequest.Query=Query.And(
新查询(“Project”,Query.Operator.Equals,“/Project/12345”),
新查询(“角色”,Query.Operator.Equals,“项目管理员”);

获取用户和电子邮件地址时,应在请求中包含您正在查找的数据。

您是否编写了任何代码?Stackoverflow通常在您有一些代码要首先共享的情况下工作得最好…@KyleMorse我刚刚更新了问题,以包含我尝试过的一些代码。我在下面添加了代码段,但没有得到任何结果。我在调用结果集上的Count()时也返回了0,但我的项目引用有效,并且有2个项目管理员<代码>QueryResult pAdminResult=\u rallyRestApi.Query(projectAdminRequest);foreach(pAdminResult.Results中的var admin){Console.WriteLine(admin[“User”]);}噢,对了-我打赌有错误。如果您今天稍后再试,我打赌它会开始工作-ProjectPermission上的Project属性以前不可过滤,但我在今天下午的部署中修复了它。。。对不起,我忘了在回答中提到这一点<代码>QueryResult pAdminResult=\u rallyRestApi.Query(projectAdminRequest);WriteLine(pAdminResult.Results.Any())//返回false只是想知道我的代码是否正确,我在您的答案片段的末尾添加了这两行。我可以等到它展开。