Группировка элементов, доступных для данных

#c# #json #datatable #webapi

Вопрос:

Вот данные, которые у меня есть.

введите описание изображения здесь

Чтобы получить вложенный JSON, подобный этому:

 [
   {
      "ID":"1",
      "Subject":"Eng",
      "Marks":70,
      "CHILD":[
         {
            "ID":"1",
            "Subject":"Math",
            "Marks":90
         },
         {
            "ID":"1",
            "Subject":"Phy",
            "Marks":80
         }
      ]
   },
   {
      "ID":"2",
      "Subject":"Eng",
      "Marks":75,
      "CHILD":[
         {
            "ID":"1",
            "Subject":"Math",
            "Marks":85
         }
      ]
   },
   {
      "ID":"3",
      "Subject":"Math",
      "Marks":60,
      "CHILD":[
         
      ]
   }
]
 

Если идентификатор имеет N номеров mark details , 1-й mark detail станет заголовком, а остальные (N-1) будут отображаться под тегом ДОЧЕРНЕГО массива.
Пожалуйста, помогите мне создать вложенный JSON (группа по идентификатору), как в примере выше. Пожалуйста, посоветуйте.

Комментарии:

1. Как вы решите, что английский язык является вашим основным элементом?

2. Я думаю, вы справитесь с этим с помощью Newtonsoft и LINQ.

3. Тема @AmitGupta строится в порядке asc. Так что Энлиш придет в качестве главного элемента.

Ответ №1:

Вам нужно создать класс примерно так —

 > class myClass  {
>     public string Id {get;set;}
>     public string Subject {get;set;}
>     public int Marks {get;set;}
>     public List<myClass> CHILD {get;set;}  }
 

Затем выполните цикл по таблице данных и заполните данные об объекте этого класса.
Затем используйте NewtonSoft для преобразования класса в JSON.

Пожалуйста, дайте мне знать, если вам понадобятся дополнительные разъяснения.

Комментарии:

1. У меня есть миллионы записей , таких как, так что я думаю, что зацикливание — не очень хороший вариант. Я пытаюсь справиться с этим с помощью LINQ , но не получаю ожидаемого результата

2. @ArijitMondal миллионы записей должны быть отфильтрованы на стороне базы данных до того, как произойдет преобразование Json. Я полагаю, что было бы трудно обрабатывать json для миллионов записей. В современном MS SQL есть функция «для json» , которая может вам пригодиться

3. Кстати, Linq предоставляет нам только способ минимизировать код и помогает нам предоставлять более читаемый и гибкий код. Внутренне он зацикливает записи. Если вы беспокоитесь о производительности, то вы можете создать свой JSON в самой базе данных. Почти все современные RDM предоставляют способ создания и чтения JSON.