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