gpt4 book ai didi

c# - 无效的存储类型 : DBNull

转载 作者:太空宇宙 更新时间:2023-11-03 12:46:46 26 4
gpt4 key购买 nike

当使用 expando 对象填充我的数据表时,我在初始化新的 datarow 时遇到以下错误消息。异常(exception)情况是:

Invalid Storage Type: DBNull

public static DataTable ToCLDataTable<T>(List<T> items)
{
DataTable dataTable = new DataTable("CLWorkQueue");
//Get all the properties
DataRow dr;

var expandoDict = items[0] as IDictionary<string, object>;
foreach (var key in expandoDict.Keys)
{
if ((expandoDict[key]).GetType() == typeof(DateTime))
{
dataTable.Columns.Add(key.ToString(), typeof(DateTime));
}
else
{
dataTable.Columns.Add(key.ToString(), expandoDict[key].GetType());
}
}

for (int i = 0; i < items.Count; i++)
{
var expandoDictData = items[i] as IDictionary<string, object>;
//var values = new object[expandoDictData.Count];
int j = 0;
dr = dataTable.NewRow(); /*Though the datatable has all the required columns, but whenever i try to initialize a new row an exception occurs.*/
foreach (var key in expandoDictData.Keys)
{
//values[j] = expandoDictData[key].ToString();
dr[key] = expandoDictData[key].ToString();
j++;
}
dataTable.Rows.Add(dr);
//dataTable.Rows.Add(values);
}[enter image description here][1]

最佳答案

items[0] 中第一个结果的值是DBNull.Vaue - 这是您的 SQL 客户端填充到结构中的内容。这就是 SQL 客户端用来指示空值的内容。因此,第一个 Value 中对象的实际类型IDictionary<String,object>DBNull ...如果有一个值,它就不会是那种类型。您可能必须迭代字典,直到获得一个值,然后才能将该列添加到数据行中……或者想出一种更可靠的方法来将类型分配给该列。

关于c# - 无效的存储类型 : DBNull,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37026188/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com