首页 > 解决方案 > Dynamics CRM OrderBy 表达式不起作用

问题描述

我正在尝试从 Dynamics CRM 下载潜在客户 ID,我需要它们按 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

我在这里做错了什么?

标签: sdkdynamics-crmmicrosoft-dynamicsguidquery-expressions

解决方案


这是按照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

等等。


推荐阅读