使用LINQ将多个文本框插入到单独行中的sql表中

将文本框的值插入到sql表的单行的特定列中使用LINQ并不是什么大问题,而是如何在新行中插入每个文本框的内容,例如,如果我们有5个文本框,那么它应该创建5个新行在sql表中。 下面是我如何将文本框插入单行的不同列:

Table Name: tblModulRelayConfig index fltCe fltUT1 fltUT2 fltUT3 fltUT4 fltUT5 fltUT6 1 75 Text1 Text2 Text3 Text4 Text5 Text6 2 76 Text1 Text2 Text3 Text4 Text5 Text6 using (myDataContext mydc= new myDataContext()) { tblModulRelayConfig tblModuler = (from CE in mydc.tblCEs where CE.fltCE == 75 select CE).FirstOrDefault(); if(tblModuler != null)//in order to update table { nyModul.fltUT1 = TextBox1.Text; nyModul.fltUT2 = TextBox2.Text; nyModul.fltUT3 = TextBox3.Text; nyModul.fltUT4 = TextBox4.Text; nyModul.fltUT5 = TextBox5.Text; nyModul.fltUT6 = TextBox6.Text; } else // if it does no exist already { tblModulRelayConfig nyModul = new tblModulRelayConfig(); nyModul.fltUT1 = TextBox1.Text; nyModul.fltUT2 = TextBox2.Text; nyModul.fltUT3 = TextBox3.Text; nyModul.fltUT4 = TextBox4.Text; nyModul.fltUT5 = TextBox5.Text; nyModul.fltUT6 = TextBox6.Text; mydc.tblModulRelayConfigs.InsertOnSubmit(nyModul); mydc.SubmitChanges(); } } 

但是如何创建一个表如下,我的意思是不是在单行中插入文本boxe值,而是想在单个按钮点击中插入新行中每个文本boxe的数据:

 tblModulRelayConfig index fltCe fltUTNr fltUT 1 75 1 Text1 2 75 2 Text2 3 75 3 Text3 4 75 4 Text4 5 75 5 Text5 6 75 6 Text6 

我尝试了以下代码,但没有中断循环,它只将最后一个textboxe数据添加到表中,并且只有添加第一个textboxe值。 我尝试使用的代码来自以下链接: 在单独的文本框中显示Linq-to-SQL表行

  var textbox = GetAll(this, typeof(TextBox)); tblModulRelayConfig nyKanal = new tblModulRelayConfig (); foreach (Control c in textbox) { textNr++; if (c is TextBox) { var tx = ((TextBox)c); nyKanal.fltUTNr = textNr; nyKanal.fltUT=tx.Text; sls.tblModulRelayConfig .InsertOnSubmit(nyKanal); sls.SubmitChanges(); break; } } 

你可以尝试这个解决方案。 我已经用包含文本框名称的fltUTName替换了fltUTNr 。 通过这种方式,您可以更好地绑定您的ui:

 index fltCe fltUTName fltUT 1 75 TexBox1 Text1 2 75 TexBox2 Text2 3 75 TexBox3 Text3 4 75 TexBox4 Text4 5 75 TexBox5 Text5 6 75 TexBox6 Text6 int fltCE_item = 75; using (myDataContext mydc= new myDataContext()){ List tblModuler = ( from CE in mydc.tblCEs where CE.fltCE == fltCE_item select CE ); foreach(TextBox tx in GetAll(this, typeof(TextBox)){ if(tblModuler.Count > 0){ //update table foreach(var CE in tblModuler) if(CE.fltUTName.Equals(tx.Name)) CE.fltUT = tx.Text; }else{ //insert: index should be autoseeded into the db; tblModulRelayConfig nyModul = new tblModulRelayConfig(); nyModul.fltCe = fltCE_item; nyModul.fltUTName = tx.Name; nyModul.fltUT = tx.Text; mydc.tblModulRelayConfigs.InsertOnSubmit(nyModul); } } mydc.SubmitChanges(); }