1

我在订购在 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);
4

2 回答 2

0

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

EntityCollection results = _client.RetrieveMultiple(query);

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

这将产生您正在寻找的结果。这不是一个理想的解决方案,但至少您不必将所有内容存储两次。

于 2018-03-23T14:31:46.997 回答
0

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

希望这会有所帮助,拉维·卡什亚普

于 2018-03-22T04:06:15.297 回答