我在订购在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);
答案 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"))
);
这将产生您想要的结果。它不是一个理想的解决方案,但至少你不需要存储两次。