Как отсортировать массив JObjects в VB.net - PullRequest
0 голосов
/ 25 августа 2018

Я работаю в VB.net (4.5) и использую пакет Newtonsoft Json Linq.

У меня есть массив (BuyList), состоящий из 100 рыночных ордеров в формате:

{{ «Количество»: 0,14333804, "Оценить": 6693.01 }}

Я бы хотел отсортировать массив по значениям "Rate" от низкого до высокого.

Вот как я создаю массив:

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

BittrexResponse - это объект JObject, созданный в результате анализа запроса Http.

Я пытался использовать:

Array.sort(BuyList)

Из-за чего выдается ошибка, из-за которой не удалось сравнить два элемента в массиве, и что хотя бы один элемент должен реализовывать IComparable. Как мне указать, что я хочу сравнить все значения «Rate» и отсортировать их от низкого к высокому?

1 Ответ

0 голосов
/ 25 августа 2018

Вы сортируете массив любого типа точно таким же образом. Если элементы не реализуют 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...