防止此 foreach 循环提前停止

Preventing this foreach loop from stopping early

上周我发布了 question, which was given the answer that the AtTask API does have a set limit, and to change this, "$$LIMIT" needs to be used, as explained by the AtTask site

这非常有用,只是我不确定将“$$LIMIT”放在哪里,因为我使用的是 C#,而 AtTask C# 示例不包括它。我一直在 AtTask 开发者网站上搜索解决方案,但一直空手而归。

如何在 C# 中使用此代码来提高调用限制?

编辑

我上一个问题中包含的代码示例:

JToken projects = client.Search(ObjCode.PROJECT, new {groupID = userGroupID});
foreach (var j in projects["data"].Children())
{
    Console.WriteLine("# " + counter + " Name: {0}", j.Value<string>("name")); 
    counter++;
}

看起来他们的 API 将传递给 Search() 的第二个参数的对象转换为查询字符串参数。所以在你的例子中

client.Search(ObjCode.PROJECT, new {groupID = userGroupID});

以下 url 已创建(123 代表您的组 ID 是什么)。

GET /attask/api/project/search?groupID=123

所以要将 $$LIMIT 添加到 url 添加 $$LIMIT 到对象。不幸的是,C# 不允许在名称中使用 $。所以我的建议是稍微修改一下他们的C#API。首先将对 Search() 的调用更改为此

client.Search(ObjCode.PROJECT, new {groupID = userGroupID, __Limit = 200 });

然后,在AtTaskRestClient.cs中,将文件末尾的parameterObjectToStringArray()更改为以下内容。

private string[] parameterObjectToStringArray(object parameters, params string[] toAdd) {
    var properties = parameters.GetType().GetProperties();
    List<string> p = new List<string>(properties.Length);
    p.AddRange(toAdd);
    foreach(var prop in properties) {
        string propName = prop.Name;
        if (propName.StartsWith("__"))
        {
            propName = "$$" + propName.Substring(2);
        }
        string line = string.Format("{0}={1}", propName, prop.GetValue(parameters, null));
        p.Add(line);
    }
    return p.ToArray();
}

此更改还允许您使用以 $$ 开头的其他参数,例如 $$FIRST。