2016-12-06 7 views
0

linqを使用してJSON配列をMSSQLテーブルに取得しようとしています。私はほとんどそれを動作させるようにしましたが、現在のコードでは、forの持続時間の最初の行をリスト部分に挿入します。挿入後に表はthisのように見えます。私はあなたが最初foreachは次のようになりますだと思うJson、linqとSQLの複数の行が同じ行を挿入

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); 

答えて

1

foreach (var jsonitem in jsondata) 
    { 
     thelist.Add(new insertmultiapiwhitelist() 
     { 
      naam = jsonitem.naam, 
      webid = jsonitem.webid, 
      verbruik = jsonitem.verbruik, 
      datum = jsonitem.datum 
     }); 
    } 
+0

それでした!私はforeachの間違った定義を選択します。 – Frostopal

0

をだから私はあなたはそれが各個人の代わりに最初の行を挿入することを意味正しくあなたの質問を理解していればこれが私のコードですか?私はあなたの間違いはここにあると思う:あなたは基本的に私のリストの各項目について」言っている

foreach (var jsonitem in jsondata) 
    { 
     thelist.Add(new insertmultiapiwhitelist() 
     { 
      naam = jsonitem.naam, 
      webid = jsonitem.webid, 
      verbruik = jsonitem.verbruik, 
      datum = jsonitem.datum 
     }); 
    } 

、0番目の要素の名前とその1番目の要素webidを挿入します。

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 
     }); 
    } 

が、それはこれをすべきではありませんこれはまったく同じループです。あなたはjsonondataの代わりにjsonitemを使うべきです;-)

+0

1秒遅すぎる@msokrates答え – Markinson

+0

そう、私は今私の間違いを見る。私はどこが間違っているかを見て、「盛り上がった」。私もjsonitem.xから[]部分を削除しました。ありがとう! – Frostopal

+0

これらの問題を解決するには、デバッグはあなたの親友です;-)あなたがデバッグに慣れていない場合は、絶対に見てください!それは時間のトンを節約します。 – Markinson

関連する問題