繁体   English   中英

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

[英]How do I sort an array of JObjects in VB.net

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

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

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

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

这是我创建数组的方式:

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

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

我一直在尝试使用:

Array.sort(BuyList)

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

您以完全相同的方式对任何类型的数组进行排序。 如果元素没有实现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值。 通常可以归结为调用一个或多个确实实现了IComparable的类型的CompareTo方法,就像Decimal一样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM