Есть ли способ условно сериализовать объекты списка C # на основе свойства? - PullRequest
0 голосов
/ 01 октября 2018

У меня есть модель MVC, которая генерирует файлы JSON на основе пользовательских данных, которые используются как часть автоматизированного рабочего процесса.Проблема, которую я имею, состоит в том, чтобы выяснить, как изменить порядок, в котором список объектов сериализуется на основе определенного значения свойства.

Вот упрощенный взгляд на мою модель:

public class Ticket
{
    public string TicketNumber { get; set; }
    public string TicketName { get; set; }
    public string ApplicationName { get; set; }
    public IList<Jams> JamsList { get; set; }
}

public class RootObject
{
    public Ticket ChangeTicket { get; set; }
}

public class JamsDestination
{
    public string Dev { get; set; }
    public string QA { get; set; }
    public string Prod { get; set; }
}

public class Jams
{
    public string TFSLocation { get; set; }       
    public string FileName { get; set; }
    public string JamsType { get; set; }
    public JamsDestination JamsLocation { get; set; }
}

(я использую Newtonsoft.Json и функцию SerializeObject () в разделе post моего контроллера)

JamsType - это выпадающий список, заполненный таблицей sql (переменная, задание, триггер и поле).То, что я пытаюсь сделать, это убедиться, что любое изменение Jams (в списке: JamsList) сериализовано в порядке, который гарантирует, что все изменения Jams JamsType = Box сериализуются последними , чтобы гарантировать, что онобудет работать правильно, как часть нашего автоматизированного рабочего процесса. Есть ли способ выполнить это без настройки какой-либо формы функции Javascript в представлении, чтобы изменить их порядок до того, как они будут проиндексированы?(На мой взгляд, это динамическая установка таблицы, поэтому не гарантируется, что даже джемы будут меняться каждый раз, не говоря уже о том, сколько их связано с билетом).

1 Ответ

0 голосов
/ 04 октября 2018

Я понял, что мне просто нужно добавить логику Linq в свой контроллер PRIOR для сериализации файла JSON, выполнив следующее:

ticket.JamsList = ticket.JamsList.OrderBy(jams => jams.JamsType == "Box").ToList();

Все, что на самом деле делает, это просто переупорядочивает список изменений Jams, чтобы соответствоватьмои условия, прежде чем он будет сериализован, вместо того, чтобы изменить порядок, он сериализует список (как я думал, что это должно быть выполнено).

...