Linq下的数据存储问题

Linq下的数据存储问题

不多所,看注释。不注意这些技巧,可能你的数据保存无效。

  var cx_xscj = from aa in sjklj.xgk_xscj

                              select aa;//获取所有(要保存)记录,不一定是全部记录,然后进行存储,查询语句放到循环之外

                FpSpread1.OpenExcel(Server.MapPath("~/exceldr/") + wjm, FarPoint.Excel.ExcelOpenFlags.DataOnly);

                int i = 1;

                foreach (var kk in cx_xscj)//excel中计算数据,填入到fpread中,从fpread中读取数据存入数据库

                {

                    //获取学号,姓名,班级定位

                    string xh = this.FpSpread1.ActiveSheetView.Cells[i, 0].Text.Trim();

                    string xm = this.FpSpread1.ActiveSheetView.Cells[i, 1].Text.Trim();

                    string bj = this.FpSpread1.ActiveSheetView.Cells[i, 2].Text.Trim();

                    string strhx = this.FpSpread1.ActiveSheetView.Cells[i, 13].Text.Trim();//化学等级

                    string strsw = this.FpSpread1.ActiveSheetView.Cells[i, 14].Text.Trim();//生物等级

                    string strzz = this.FpSpread1.ActiveSheetView.Cells[i, 15].Text.Trim();//政治等级

                    string strdl = this.FpSpread1.ActiveSheetView.Cells[i, 16].Text.Trim();//地理等级

                    /*如果还要根据每一条记录,再去查询,必然浪费大量时间

                    string gx_ffdj = "update xgk_xscj set hxdj=@hxdj,swdj=@swdj,zzdj=@zzdj,dldj=@dldj where xh=@xh and xm=@xm and bj=@bj";

                    SqlParameter sqlcs1 = new SqlParameter("@hxdj", strhx);

                    SqlParameter sqlcs2 = new SqlParameter("@swdj", strsw);

                    SqlParameter sqlcs3 = new SqlParameter("@zzdj", strzz);

                    SqlParameter sqlcs4 = new SqlParameter("@dldj", strdl);

                    SqlParameter sqlcs5 = new SqlParameter("@xh", xh);

                    SqlParameter sqlcs6 = new SqlParameter("@xm", xm);

                    SqlParameter sqlcs7 = new SqlParameter("@bj", bj);

                    SqlParameter[] sqlcsch = new SqlParameter[] { sqlcs1, sqlcs2, sqlcs3, sqlcs4, sqlcs5, sqlcs6, sqlcs7 };

                    gj.sqltjscgx(conn, gx_ffdj, sqlcsch);//更新赋分等级

                     */

                    //var kk= cx_xscj.Where(aa => aa.xh == xh && aa.xm == xm && aa.bj == bj).First();这种查询方式不是最快,最好是记录从上到下指针指到这里,不要再次查询

                    kk.hxdj = strhx;

                    kk.swdj = strsw;

                    kk.zzdj = strzz;

                    kk.dldj = strdl;

                    i++;

                }

                sjklj.SaveChanges();//循环外保存。有多个并列循环,在每个循环外保存一次

猜你喜欢

转载自www.cnblogs.com/zrprj/p/12585025.html