我试图使用linq将JSON数组放入MSSQL表中。我几乎可以使用它,但是使用当前代码,它会在列表部分的for期间插入第一行。插入后表格看起来像this。这是我的代码:
List<insertmultiapiwhitelist> thelist = new List<insertmultiapiwhitelist>();
string json = "[{'naam':'Default Web Site','webid':1,'verbruik':0,'datum':'2016-12-05 00:00:00'}]";
//json above has 150 items, purged to keep it clean.
dynamic jsondata = JsonConvert.DeserializeObject(json);
foreach (var jsonitem in jsondata)
{
thelist.Add(new insertmultiapiwhitelist()
{
naam = jsondata[0].naam,
webid = jsondata[1].webid,
verbruik = jsondata[2].verbruik,
datum = jsondata[3].datum
});
}
foreach(var listgebruik in thelist)
{
webfarm_data dbtoevoegingen = new webfarm_data();
dbtoevoegingen.naam = listgebruik.naam;
dbtoevoegingen.webid = listgebruik.webid;
dbtoevoegingen.verbruik = listgebruik.verbruik;
dbtoevoegingen.datum = DateTime.Parse(listgebruik.datum);
DeDB.webfarm_data.Add(dbtoevoegingen);
}
var updateantwoord = new insertmultiapiwhitelist { antwoord = "Niets ontvangen" };
try
{
DeDB.SaveChanges();
updateantwoord = new insertmultiapiwhitelist { antwoord = "Insert voltooid" };
}
catch (Exception e)
{
var foutmelding = e.ToString();
updateantwoord = new insertmultiapiwhitelist { antwoord = foutmelding };
}
return View(updateantwoord);
答案 0 :(得分:1)
我认为你首先foreach
应该是这样的:
foreach (var jsonitem in jsondata)
{
thelist.Add(new insertmultiapiwhitelist()
{
naam = jsonitem.naam,
webid = jsonitem.webid,
verbruik = jsonitem.verbruik,
datum = jsonitem.datum
});
}
答案 1 :(得分:0)
因此,如果我正确理解您的问题,您的意思是它会插入第一行而不是每一行?我认为你的错误就在这里:
foreach (var jsonitem in jsondata)
{
thelist.Add(new insertmultiapiwhitelist()
{
naam = jsondata[0].naam,
webid = jsondata[1].webid,
verbruik = jsondata[2].verbruik,
datum = jsondata[3].datum
});
}
不应该是这样的:
foreach (var jsonitem in jsondata)
{
thelist.Add(new insertmultiapiwhitelist()
{
naam = jsonitem.naam,
webid = jsonitem.webid,
verbruik = jsonitem.verbruik,
datum = jsonitem.datum
});
}
您基本上是在说“对于我的列表中的每个项目,插入第0个元素的名称及其第1个元素webid”,这与每个循环完全相同。您应该使用jsonitem而不是jsondata; - )