ваш синтаксис выглядит хорошо.Где вы видите, что произошла ошибка «... ключа не было ...»?При доступе к коллекции результатов?
я включаю приведенный ниже пример кода, который иллюстрирует запросы пользователей в рамках подписки и обобщение их рабочей области и разрешений проекта.Надеюсь, это поможет.
// 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");
}