Добавление строк и столбцов в DataTable в C# с использованием данных Dynami c? - PullRequest
1 голос
/ 09 июля 2020

Как лучше всего добавлять неизвестные значения из списка списков в столбцы и строки DataTable? У меня есть списки списков объектов типа данных

public class RegClass
{
    public string parameterName { get; set; }
    public string parameterValue { get; set; }
}

Каждый раз, когда новое «имя параметра» повторяется через новый столбец с этим именем, следует добавлять соответствующее «значение параметра» в качестве строки под ним. . В противном случае при итерации и обнаружении, что объект «parameterName» идентичен уже созданному столбцу, «parameterValue» следует просто добавить в виде строки под уже существующим столбцом. Если в списке нет объекта с параметром «имя параметра», равным существующему столбцу, следует добавить пустое значение.

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

Например, на изображении выше первый список должен содержать объекты типа «RegClass» с «parameterNames» из «s2», «id» и «segment». Поскольку они были добавлены первыми, новые столбцы будут созданы в таблице данных и добавлены «значения параметров». Следующий список содержал объекты типа s2 и id, но не сегмент. Поскольку столбцы уже были созданы, объекты «parameterValues» записываются в соответствующие строки, но поскольку не было объекта с «parameterName», равным «сегменту», добавляется пустое значение. Последний добавленный список содержит объект 'parameterName' 'vtoken'. Поскольку это первый раз, когда объект с этим значением был добавлен, добавляется новый столбец.

Я попытался выполнить итерацию по списку списков и получить каждое уникальное имя параметра, а затем добавить столбцы в таблицу данных .

   List<string> queryParametersList = new List<string>();
    
   List<List<RegClass>> regList = new List<List<RegClass>>();
   
   foreach (var v in regList)
   {
       foreach (var x in v)
       {
           if (!queryParametersList.Contains(x.parameterName))
           {
               queryParametersList.Add(x.parameterName);
           }
       }
   }

   DataTable queryParamsTable = new DataTable();

   foreach (var v in queryParametersList)
   {
        queryParamsTable.Columns.Add(v, typeof(string));         
   }

Но как теперь заполнить строки DataTable?

1 Ответ

1 голос
/ 10 июля 2020

нужно снова l oop regList:

 foreach (var v in regList)
   {
       var row = queryParamsTable.NewRow();
       foreach (var x in v)
       {
           row[x.parameterName] = x.parameterValue;
       }
       queryParamsTable.Rows.Add(row);
   }
...