如何在VB.net中对JObjects数组进行排序

时间:2018-08-24 22:11:38

标签: arrays json vb.net sorting

我正在VB.net(4.5)中工作,并使用Newtonsoft Json Linq软件包。

我有一个数组(BuyList),该数组由100个市场订单组成,格式为:

{{   “数量”:0.14333804,   “费率”:6693.01 }}

我想按“ Rate”值从低到高对数组进行排序。

这是我创建数组的方式:

Dim BuyList As Array = BittrexResponse("result")("buy").Children().ToArray()

BittrexResponse是通过解析Http请求创建的JObject。

我一直在尝试使用:

Array.sort(BuyList)

抛出一个错误,指出无法比较数组中的两个元素,并且至少一个元素必须实现IComparable。如何指定我要比较所有“费率”值并将它们从低到高排序?

1 个答案:

答案 0 :(得分:0)

您以完全相同的方式对任何类型的数组进行排序。如果元素没有实现IComparable,则Sort方法不知道如何比较它们以对其进行排序,因此您必须告诉它。通常,您如何从这样的对象中获取该Rate值,它是什么类型的?我猜想您将使用Item属性,并且它是DoubleDecimal。您需要告诉Sort方法,例如

Array.sort(BuyList, Function(jo1, jo2) CDec(jo1.Item("Rate")).CompareTo(CDec(jo2.Item("Rate"))))

这是使用需要一个Comparison(Of T)委托的重载。这样的委托指的是一种方法,给定两个数组元素,它们将以特定方式比较它们,并返回指示它们相对顺序的Integer值。通常可以归结为调用一个或多个确实实现CompareTo的类型的IComparable方法,就像Decimal一样。