使用QueryExpression按数字顺序排序

时间:2018-03-21 06:49:06

标签: dynamics-crm sql-order-by crm query-expressions

我在订购在CRM中保存为字符串的数字时遇到问题,

它的工作正常到10,然后它说9> 10我知道一个简单的解决方案,我可以在字符串中将零附加到固定长度。 想知道是否有某种方法可以通过int以某种方式按字符串排序。

我的代码:

       QueryExpression query = new QueryExpression(entity);
       query.ColumnSet.AddColumn(ID);
       query.AddOrder(ID, OrderType.Descending); //there is a problem because the type is string.
       EntityCollection entityCollection = organizationService.RetrieveMultiple(query);

2 个答案:

答案 0 :(得分:0)

我认为没有任何简单的方法可以实现这一目标。我对邮政编码面临同样的问题,最终存储了两个值,即字符串和整数。在查询时我使用int字段对其进行排序。

希望这有帮助, Ravi Kashyap

答案 1 :(得分:0)

此问题的另一个可能解决方案是使用LINQ的OrderBy()方法对查询结果进行排序,而不是使用QueryExpression内置的排序。

EntityCollection results = _client.RetrieveMultiple(query);

var sortedResults = results.Entities.OrderBy((e) => 
                    int.Parse(e.GetAttributeValue<string>("nameofattribute"))
                    );

这将产生您想要的结果。它不是一个理想的解决方案,但至少你不需要存储两次。