簡體   English   中英

無效的存儲類型:DBNull

[英]Invalid Storage Type: DBNull

當使用 expando 對象填充我的數據表時,當我初始化一個新的datarow時,我面臨以下錯誤消息。 例外是:

無效的存儲類型: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 客戶端用來指示空值的內容。 因此, IDictionary<String,object>的第一個Value中對象的實際類型DBNull ...不是如果有值就會是的類型。 在將該列添加到數據行之前,您可能必須迭代您的字典直到獲得一個值...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM