1

我有一个奇怪的问题,我不确定错误在哪里

我正在使用 C#,在对 Customer 对象运行带有过滤器的查询时,我得到了一系列奇怪的结果

如果我设置的过滤器应该返回 8 条记录,那么我的实现将返回 8、8、3、1、1、1 条记录(按此顺序,在每个后续调用中,所有这些都是重复的)......

这就是我实现迭代器的方式

var customerQuery = new CustomerQuery()
            {
                ChunkSize = "8",
                Item = Guid.NewGuid().ToString("N"),

                IncludeFinancialIndicator = false,
                IncludeFinancialIndicatorSpecified = true,
                MinimumBalanceSpecified = true,
                MinimumBalance = 92,
                SynchronizedFilterSpecified = true,
                SynchronizedFilter = SynchronizedFilterEnumType.Synchronized,

             };
        var results = new List<Customer>();
        int count;
        //Loop until find all the results.
        do
        {
            IEnumerable<Customer> partialResult = customerQuery.ExecuteQuery<Customer>(context);
            count = partialResult.Count();
            //First pass here returns 8 records
            //Second pass returns same 8 records again
            //third pass returns 3 records
            //Three more passes with 1 record each

            results.AddRange(partialResult);
        } while (count > 0);

我做错了什么或遗漏了什么吗?

谢谢!

编辑:

这是实现分页选项的代码....

var customerSet = new List<Customer>();
        List<Customer> customerQueryResult = null;
        int startPage = 1;
        var qbdCustomerQuery = new CustomerQuery();
        do
        {
            qbdCustomerQuery.ChunkSize = "10";
            qbdCustomerQuery.MinimumBalanceSpecified = true;
            qbdCustomerQuery.MinimumBalance = 92;
            qbdCustomerQuery.ItemElementName = ItemChoiceType4.StartPage;
            qbdCustomerQuery.Item = startPage.ToString();
            customerQueryResult = qbdCustomerQuery.ExecuteQuery<Customer>(context).ToList();
            if (customerQueryResult.Count > 0) { customerSet.AddRange(customerQueryResult); }
            startPage++;
        } while (customerQueryResult.Count > 0);

如果我将 ChunkSize 设置为“100”,我会得到 8 条预期记录,但是当尝试使用 ChunkSize =“10”运行它时,我会得到 8,8,1(重复记录)

4

0 回答 0