我正在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。如何指定我要比较所有“费率”值并将它们从低到高排序?
答案 0 :(得分:0)
您以完全相同的方式对任何类型的数组进行排序。如果元素没有实现IComparable
,则Sort
方法不知道如何比较它们以对其进行排序,因此您必须告诉它。通常,您如何从这样的对象中获取该Rate
值,它是什么类型的?我猜想您将使用Item
属性,并且它是Double
或Decimal
。您需要告诉Sort
方法,例如
Array.sort(BuyList, Function(jo1, jo2) CDec(jo1.Item("Rate")).CompareTo(CDec(jo2.Item("Rate"))))
这是使用需要一个Comparison(Of T)
委托的重载。这样的委托指的是一种方法,给定两个数组元素,它们将以特定方式比较它们,并返回指示它们相对顺序的Integer
值。通常可以归结为调用一个或多个确实实现CompareTo
的类型的IComparable
方法,就像Decimal
一样。