Сортировать объект по свойству в JObject - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть список, определенный как:

    List<SensorData> tempSensorData = new List<SensorData>();

Вот как я заполняю этот список:

    tempSensorData.Add(new SensorData
    {
         Data = JObject.Parse(values[r, 4].ToString()),
         SensorGuid = values[r, 2].ToString()
    });

Это мое определение класса SensorData:

public class SensorData
    {
        public JObject Data { get; set; }

        public string SensorGuid { get; set; }
    }

В Data Property есть свойство с именем timestamp. Я хочу, чтобы мой список сортировался по этому значению. Как я могу это сделать? Я пытался сделать:

     tempSensorData.OrderBy(o => o.Data.SelectToken("timestamp"));

Но это не помогает

Это значение JSON в данных:

{{
  "Record": "A",
  "timestamp": 1572987031,
  "signal_strength": "021",
  "vbatt": "3.10",
  "temperature": "21.5"
}}

1 Ответ

2 голосов
/ 19 февраля 2020

Вы можете попробовать что-то подобное

var result = tempSensorData.OrderBy(o => o.Data["timestamp"].Value<long>());

Получить long значение свойства timestamp, используя Value<T> метод JToken, затем использовать это значение в Func<TSource,TKey> ключевой селектор в OrderBy.

В отличие от Sort метода класса List<T>, OrderBy метод возвращает IOrderedEnumerable как результат вместо изменения списка источников, поэтому вы должны присвоить возвращаемое значение переменной

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