你的语法看起来不错。您在哪里看到“...密钥不存在...”错误发生?访问结果集合时?
我在下面包含了一个代码示例,该示例说明了在订阅中查询用户并总结了他们的工作区和项目权限。我希望这有帮助。
// Query for User
Request userRequest = new Request("user");
userRequest.Fetch = new List<string>()
{
"UserName",
"Subscription",
"DisplayName",
"UserPermissions"
};
userRequest.Query = new Query("");
QueryResult queryUserResults = restApi.Query(userRequest);
String userName;
String displayName;
String mySubscriptionRef;
String mySubscriptionName;
// Fetch strings to pull in Subscription and UserPermission metadata
string[] subscriptionFetch = { "Name", "SubscriptionID", "CreationDate" };
string[] userPermissionFetch = { "Name", "Role", "Workspace", "Project" };
string[] workspaceFetch = {"Name", "Description"};
foreach (var result in queryUserResults.Results)
{
userName = result["UserName"];
displayName = result["DisplayName"];
var mySubscription = result["Subscription"];
mySubscriptionRef = mySubscription["_ref"];
// Query by Workspace Ref.
var mySubscriptionFetched = restApi.GetByReference(mySubscriptionRef, subscriptionFetch);
mySubscriptionName = mySubscriptionFetched["Name"];
Console.WriteLine("Username: " + userName);
Console.WriteLine("Display Name: " + displayName);
Console.WriteLine("Subscription: " + mySubscriptionName);
var myUserPermissions = result["UserPermissions"];
// Loop through UserPermissions Collection
foreach (var thisPermission in myUserPermissions)
{
// Grab UserPermission ref
var myUserPermissionRef = thisPermission["_ref"];
// Query from UserPermission ref
var myUserPermissionFetched = restApi.GetByReference(myUserPermissionRef, userPermissionFetch);
// Output project name
Console.WriteLine(" Role: " + myUserPermissionFetched["Role"]);
// Try Workspace ref
try
{
var myWorkspace = myUserPermissionFetched["Workspace"];
var myWorkspaceRef = myWorkspace["_ref"];
// Query from Workspace ref
var myWorkspaceFetched = restApi.GetByReference(myWorkspaceRef, workspaceFetch);
// Output Workspace data
Console.WriteLine(" Workspace Name:" + myWorkspaceFetched["Name"]);
}
catch (KeyNotFoundException knfe)
{
Console.WriteLine("Key not found: " + "Workspace");
}
// Try Project ref
try
{
var myProject = myUserPermissionFetched["Project"];
var myProjectRef = myProject["_ref"];
// Query from Workspace ref
var myProjectFetched = restApi.GetByReference(myProjectRef, workspaceFetch);
// Output Project data
Console.WriteLine(" Project Name:" + myProjectFetched["Name"]);
}
catch (KeyNotFoundException knfe)
{
Console.WriteLine("Key not found: " + "Workspace");
}