Нужна помощь в создании Datatable из списка с возможными нулевыми значениями - PullRequest
0 голосов
/ 09 сентября 2018

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

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

Вот код, который я использую для создания DataTable:

public DataTable ConvertListToCustomDataTable(List<RootObject> listOfItems)
{
    DataTable table = new DataTable();

    table.Columns.Add("DateCreated");
    table.Columns.Add("DepthCode");
    table.Columns.Add("DepthDateCreated");
    table.Columns.Add("DepthLevel");
    table.Columns.Add("DepthID");
    table.Columns.Add("DepthCategoryName");
    table.Columns.Add("DepthName");
    table.Columns.Add("DepthCategoryDateUpdated");
    table.Columns.Add("DepthDateUpdated");
    table.Columns.Add("Name");
    table.Columns.Add("ID");
    table.Columns.Add("CategoryCode");
    table.Columns.Add("CategoryDateCreated");
    table.Columns.Add("CategoryDateUpdated");
    table.Columns.Add("CategoryID");
    table.Columns.Add("CategoryName");
    table.Columns.Add("Code");

    foreach (var item in listOfItems)
    {
        var row = table.NewRow();

        row["DateCreated"] = item.DateCreated;
        row["DepthCode"] = item.Depth.Code;
        row["DepthDateCreated"] = item.Depth.DateCreated;
        row["DepthLevel"] = item.Depth.Level;
        row["DepthID"] = item.Depth.ID;
        row["DepthCategoryName"] = item.Depth.Category.Name;
        row["DepthName"] = item.Depth.Name;
        row["DepthCategoryDateUpdated"] = item.Depth.Category.DateUpdated;
        row["DepthDateUpdated"] = item.Depth.DateUpdated;
        row["Name"] = item.Name;
        row["ID"] = item.ID;
        row["CategoryCode"] = item.Category.Code;
        row["CategoryDateCreated"] = item.Category.DateCreated;
        row["CategoryDateUpdated"] = item.Category.DateUpdated;
        row["CategoryID"] = item.Category.ID;
        row["CategoryName"] = item.Category.Name;
        row["Code"] = item.Code;

        table.Rows.Add(row);
    }

    return table;
}

1 Ответ

0 голосов
/ 09 сентября 2018

Вам нужно настроить столбцы таблицы для принятия нулей.

 DataColumn datecolumn = new DataColumn("DateCreated");
 datecolumn.AllowDBNull = true;

Я бы поместил имена столбцов в массив и перебрал их, т.е. что-то похожее на это.

DataTable table = new DataTable();

string[] column = { "DateCreated", "DepthCode", "DepthDateCreated" };

foreach (var item in column)
{
    DataColumn datecolumn = new DataColumn(item);
    datecolumn.AllowDBNull = true;
    table.Columns.Add(item);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...