【发布时间】:2020-03-17 00:52:24
【问题描述】:
我正在尝试使用 SqlBulkCopy 将对象列表插入到表中。当代码命中时
var columnNames = ((Dictionary<string, object>)bData[0]).Select(x => x.Key).ToList();'
我明白了:
'无法将'Newtonsoft.Json.Linq.JObject'类型的对象转换为 类型 'System.Collections.Generic.Dictionary`2[System.String,System.Object]'' 错误。
你能帮帮我吗?
public Int64 PostBulkMessage(List<object> bData)
{
DataTable dt = new DataTable();
var columnNames = ((Dictionary<string, object>)bData[0]).Select(x => x.Key).ToList();
for (int i = 0; i < columnNames.Count(); i++)
{
dt.Columns.Add(columnNames[i]);
}
foreach (Dictionary<string, object> customer in bData)
{
DataRow dr = dt.NewRow();
for (int i = 0; i < columnNames.Count(); i++)
{
dr[columnNames[i]] = customer[columnNames[i]];
}
dt.Rows.Add(dr);
}
if (dt.Rows.Count > 0)
{
string consString = ConfigurationManager.ConnectionStrings["ConnEntities"].ConnectionString;
using (SqlConnection con = new SqlConnection(consString))
{
using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(con))
{
//Set the database table name.
sqlBulkCopy.DestinationTableName = "dbo.BulkSent";
con.Open();
sqlBulkCopy.WriteToServer(dt);
con.Close();
}
}
}
return 0;
}
【问题讨论】:
-
你看过
ToDictionary()吗? docs.microsoft.com/en-us/dotnet/api/… -
是 Stefan ,方法 'ToDictionary' 没有重载需要 0 个参数。
-
你看过如何使用
ToDictionary的例子吗? -
我认为你的行应该是这样的:
var columnNames = bData.ToDictionary(x => x.Key); -
var columnNames = bData.ToDictionary(x => x.Key);我试过了,但得到错误'对象不包含键的定义'。我也试过 ToDictionary(x => x, x => true) ,仍然得到同样的错误
标签: c# angularjs asp.net-web-api