c# - 需要帮助从可能为空值的列表创建数据表
问题描述
我需要一些帮助来编辑我的 DataTable 以处理可能的空值。
在这种情况下,它们有可能将列表中的任何项目添加到 DataTable 为空。我正在寻找在创建 DataTable 时考虑这些空值的最佳方法,因此当我将其插入 MSSQL 时,我不会遇到错误。
这是我用来生成数据表的代码:
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;
}
解决方案
您需要将表列设置为接受空值。
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);
}
推荐阅读
- python - 登录完成后如何输出内容?姜戈
- reactjs - 使用 TypeScript 和 NPM 链接创建 React 应用程序:导致模块解析失败的枚举
- java - 创建并有机会从字符串池中创建字符串对象有什么意义
- sql - Oracle 是否允许对分区进行求和,但仅当它遵守某些条件时才允许,否则使用滞后?
- c# - 如何使用 onclick 属性 c# webbrowser 单击按钮?
- python - Kivy 2 行标签文本
- byte-buddy - 如何使用 ByteBuddy 的 InvokeDynamic 类调用虚拟方法句柄?
- c# - 数据库似乎在执行期间更新,然后更改消失
- c - 使用函数交换两个变量的值时,为什么我应该以地址而不是实际变量名为目标?
- ansible - Ansible-playbook - 如何在字符串中添加大写