Динамика CRM OrderBy выражение не работает - PullRequest
1 голос
/ 24 мая 2019

Я пытаюсь загрузить идентификаторы потенциальных клиентов из Dynamics CRM, и мне нужны они, упорядоченные по LeadId:

    IOrganizationService orgService = dynamicService.OrgService;
    QueryExpression request = new QueryExpression()
    {
        EntityName = "lead",
        ColumnSet = new ColumnSet("leadid"),
        Criteria = new FilterExpression(),
        PageInfo = new PagingInfo() { ReturnTotalRecordCount = true, Count = 50, PageNumber = 1 }
    };
    request.Orders.Add(new OrderExpression("leadid", OrderType.Ascending));

    EntityCollection response = orgService.RetrieveMultiple(request);
    foreach(Entity e in response.Entities)
    {
        Console.WriteLine($"{e.Attributes["leadid"]}");
    }

Однако это возвращает их в случайном порядке.

b9b0f003-356d-e911-a966-000d3a1d7430
4298cdf4-4370-e911-a966-000d3a1d7430
97582b3c-2f6d-e911-a971-000d3a1d7b43
92d57a83-338f-e611-80e0-c4346bb588e8
a0d57a83-338f-e611-80e0-c4346bb588e8
a2d57a83-338f-e611-80e0-c4346bb588e8
a6d57a83-338f-e611-80e0-c4346bb588e8

Что я здесь не так делаю?

1 Ответ

3 голосов
/ 25 мая 2019

Это правильно отсортировано в соответствии с алгоритмом сортировки GUID .

Сравнение выполняется путем просмотра байтовых "групп" справа налево и слева направовнутри байтовой "группы".Группа байтов - это то, что ограничено символом «-».Более технически мы сначала смотрим на байты {10–15}, затем {8-9}, затем {6-7}, затем {4-5} и, наконец, {0 до 3}.

Итак, b9b0f003- 356d -e911-a966-000d3a1d7430 меньше, чем 4298cdf4- 4370 -e911-a966-000d3a1d7430.

Аналогично 4298cdf4-4370-e911-a966- 000d3a1d7430 меньше, чем 97582b3c-2f6d-e911-a971- 000d3a1d7b43 .

И так далее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...