Должно быть элегантное решение этой проблемы, которое мне не хватает.То, что я ищу , кажется чрезвычайно простым, но я пока не нашел способ сделать это.
У меня есть следующий объект:
internal class OverrideValue
{
public int RID { get; set; }
public int PID { get; set; }
public string Value { get; set; }
}
Данный RID может иметь несколько комбинаций PID / значение.Мне нужно вернуть динамически созданный (и именованный) список обратно клиенту с JSON.Итак, учитывая следующее:
var overrideList = new List<OverrideValue>()
{
new OverrideValue() {RID = 1, PID = 1, Value = "200"},
new OverrideValue() {RID = 1, PID = 2, Value = "250"},
new OverrideValue() {RID = 2, PID = 1, Value = "200"},
new OverrideValue() {RID = 2, PID = 3, Value = "300"},
new OverrideValue() {RID = 2, PID = 4, Value = "255"}
};
Мне нужно вернуть объект, подобный этому:
{ "overrides":[
{ "RID":1, "PID_1":"200", "PID_2":"250" },
{ "RID":2, "PID_1":"200", "PID_3":"300", "PID_4":"255" }
]}
Если моя база данных возвращает PID 400 000, мне нужно, чтобы объект содержал свойствоназывается " PID_4000000 " со связанным значением.
Я понимаю, что безопасность типов - это огромная часть C #, но мне кажется нелепым, что мне приходится создавать JSON вручную для этой ситуации.Похоже, что для создания динамического объекта должен быть встроенный метод.Я пытался работать с ExpandoObject (), но все, что мне удалось дать, - это список пар ключ / значение Dictionary (), который бесполезен - при сериализации свойствами являются «ключ» и «значение».
Что сводится к тому, что я использую сетку, которая будет привязываться только к плоскому (одномерному) источнику данных JSON, и мне нужно построить сетку с любыми данными, которые попадутся мне на пути.