使用 QueryExpression 按数字按字符串排序
Order by a string by numbers with QueryExpression
我在订购在 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);
我认为没有任何简单的方法可以实现这一目标。我在 post 代码中遇到了同样的问题,最终存储了两个值,即字符串和整数。在查询时我使用 int 字段对其进行排序。
希望这对您有所帮助,
拉维卡夏普
此问题的另一种可能解决方案是使用 LINQ 的 OrderBy()
方法而不是使用 QueryExpression
的内置排序方法对查询结果进行排序。
EntityCollection results = _client.RetrieveMultiple(query);
var sortedResults = results.Entities.OrderBy((e) =>
int.Parse(e.GetAttributeValue<string>("nameofattribute"))
);
这将产生您想要的结果。这不是一个理想的解决方案,但至少您不必将所有内容都存储两次。
我在订购在 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);
我认为没有任何简单的方法可以实现这一目标。我在 post 代码中遇到了同样的问题,最终存储了两个值,即字符串和整数。在查询时我使用 int 字段对其进行排序。
希望这对您有所帮助, 拉维卡夏普
此问题的另一种可能解决方案是使用 LINQ 的 OrderBy()
方法而不是使用 QueryExpression
的内置排序方法对查询结果进行排序。
EntityCollection results = _client.RetrieveMultiple(query);
var sortedResults = results.Entities.OrderBy((e) =>
int.Parse(e.GetAttributeValue<string>("nameofattribute"))
);
这将产生您想要的结果。这不是一个理想的解决方案,但至少您不必将所有内容都存储两次。